반응형
NULL 포인터란 메모리가 할당되지 않은 포인터를 의미한다. NULL포인터는 아무것도 가리키지 않는 상태를 의미한다. 즉 NULL포인터의 경우에는 참조연산자를 이용한 역참조가 되지 않는다.
1 2 3 4 5 6 7 8 9 | #include<stdio.h> int main() { int *ptr = NULL; printf("%p\n", ptr); return 0; } | cs |
다음 코드를 보자. int형 포인터 ptr에는 NULL이라는 값이 들어가있다. 그 밑에서 해당 포인터의 주소를 이스케이프 시퀸스 %p를 이용해 출력해보면
다음과 같이 주소값이 0으로 된 상태로 출력되는것을 볼 수 있다. 그렇다면 이 NULL포인터는 어떨때 쓸까? NULL포인터는 밑의 코드와 같이 만약 메모리 값이 NULL이라면 메모리를 할당하는 과정에 사용하기도 한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include<stdio.h> #include<stdlib.h> #include<memory.h> int main() { long long *ptr = NULL; if (ptr == NULL) { ptr = malloc(sizeof(long long)); } memset(ptr, 0x10, sizeof(long long)); printf("0x%llx", *ptr); return 0; } | cs |
반응형
'Language > C' 카테고리의 다른 글
동적 메모리 할당 (0) | 2019.01.18 |
---|---|
scanf와 scanf_s에 대해서 (0) | 2019.01.17 |