전체 글
-
int argc, char *argv[]Visual Studio/C 기초 2013. 10. 6. 16:03
C에선 명령 라인에서 프로그램으로 전달되는 인수를 사용할 필요가 있습니다. 명령 라인 인수는 프로그램을 실행할 때 프로그램의 이름 다음에 입력되는 값을 뜻합니다. c:>프롬프트에서 PROGNAME이라는 프로그램을 실행한다고 가정합니다. C:\>progname smith jones 2개의 명령 라인 인수인 smith와 jones는 프로그램이 실행되는 동안 읽어들일 수 있습니다. 이런 값은 프로그램의 main() 함수에 전달되는 인수로 생각할 수 있는데 명령 라인 인수는 프로그램이 실행되는 동안이 아니라 프로그램이 시작될 때 정보를 전달하는 역할을 하므로 가끔 매우 유용합니다. 원하는 만큼 많은 명령 라인 인수를 전달할 수 있습니다. 명령 라인 인수는 main() 함수에서만 읽어들일 수 있습니다. main(..
-
C언어 시프트 연산자Visual Studio/C 기초 2013. 10. 1. 16:34
시프트 연산자는 정수형 변수 값의 비트를 지정된 횟수만큼 이동시킵니다. > 연산자는 비트를 오른쪽으로 이동시킵니다. 예를 들어 10진수로 12의 값을 가지는 2진수 00001100을 오른쪽으로 2번 이동시키면 10진수 3에 해당하는 2진수 00000011이 됩니다. 특별한 상황에서는 값을 2의 제곱으로 곱하거나 나누는 경우에 시프트 연산자를 사용할 수 있습니다. 정수 값을 왼쪽으로 n번 이동시키는 것은 2n을 곱하는 것과 같고, 정수 값을 오른쪽으로 n번 이동시키는 것은 2n으로 나누는 것과 같습니다. 값이 커지면 오버플로가 발생하기도 합니다. 예제를 보겠습니다. #include main() { unsigned char y, x=255; int count; printf("10진수\t\t왼쪽으로 시프트\t..
-
C언어 memset(), memcpy(), memmove()Visual Studio/C 기초 2013. 9. 13. 18:08
이번에는 메모리 블록을 다루는 방법을 구체적으로 포스팅하겠습니다. 지금까지 메모리의 블록을 할당하고 해제하는 방법을 살펴 보았습니다. 먼저, 메모리의 블록에서 모든 바이트를 특정 값으로 설정하기 위해서 memset() 함수를 사용합니다. void *memset(void *dest, int c, size_t count); 인수 dest는 메모리 블록을 가리킵니다. c는 설정할 값이고 count는 dest에서 시작하는 대상 메모리 블록의 바이트 수입니다. c는 int형이지만 char형으로 취급이 됩니다. 즉, 하위 바이트만이 사용되므로 0부터 255까지의 c값을 지정할 수 있습니다. 다음은 memcpy() 함수인데요, 이 함수는 가끔 버퍼라고 하는 메모리 블록간에 데이터의 바이트를 복사합니다. 이 함수는 복..