본문 바로가기

언어/C3

sizeof 연산자 sizeof 는 좀 특별합니다. 컴파일러가 수행하고 CPU 가 실행하지 않는 특수한 연산자인데요. 함수처럼 생겼지만 함수가 아닙니다. 오늘은 프로그래밍을 할 때 sizeof 연산자를 쓸 때 주의해야할 점을 알아봅시다. sizeof 연산자의 피연산자는 자료형이다. sizeof 연산자는 피연산자의 자료형에 대한 연산입니다. 즉 sizeof(5) 라는 연산을 진행할 때 5는 정수가 아니라 int 라는 자료형을 가리키는 겁니다 . 'sizeof(5) = sizeof(int)' 그리고 int 형은 4바이트기 때문에 sizeof(5)의 결과는 4가 됩니다. sizeof 연산자의 피연산자는 자료형 입니다. int nData = 10; printf("%d\n", sizeof(nData + 10)); 답은 뭘까요? 네 .. 2020. 9. 28.
%*c 형식문자 scanf("%d%*c",&Age); 이런 코드 본 적 있으신가요? 이는 %d 형식 문자 외에 %*c라는 형식 문자가 추가된 형태인데, 이것은 문자 하나를 입력 버퍼에서 읽어온 후 그냥 버린다는 것을 의미합니다. 이는 fflush(stdin); 으로 입력 버퍼를 비워버리는 거와 같은 동작인데요. fflush 은 윈도우에서만 사용이 가능하기 때문에 다른 운영체제간의 통합을 생각한다면 이와 같은 방식이 더 괜찮을 수 있습니다. (fflush 는 원래 출력 버퍼를 비우는 게 표준인데 윈도우에서 이 표준을 어겨서 입력 버퍼를 비우는 걸로 합니다. 그러므로 표준을 지킨 리눅스, 유닉스에서는 사용되지 않습니다.) 그럼 이 형식 문자의 사용 예를 살펴보겠습니다. 위 코드를 사용하면 사진처럼 원하는 결과와는 좀 다른 .. 2020. 9. 22.
NULL의 개념 -NULL 개념 -널 포인터 상수 -NULL 매크로 -NUL 아스키 문자 -널 문자열 -널 문장 포인터에 NULL을 할당한다는 것은?? -> 해당 포인터는 아무것도 가리키지 않음을 의미 널 개념은 포인터가 다른 포인터와 다른 특별한 값을 가질 수 있음을 의미한다. 실제 널 개념은 널 포인터 상수에 의해 지원되는 추상적 개념이다. 널 포인터 상수는 0이거나 0이 아닐 수도 있으나 개발자가 신경을 쓰지 않아도 된다. NULL 매크로는 상수 정수 0을 void 포인터로 캐스팅한거다. 많은 라이브러리에서 다음과 같이 정의 되어 있다. #define NULL ((void*)0) NUL 아스키 문자는 모두 0으로 채워진 바이트로 정의된다. 그러나 NUL 은 NULL 포인터와 같지 않다. 널 문자열은 빈 문자열이고 .. 2020. 8. 24.