Language/C

NULL 포인터에

Hoplin 2019. 1. 18. 03:02
반응형

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, 0x10sizeof(long long));
    printf("0x%llx"*ptr);
    return 0;
}
cs
결과 : 0x1010101010101010




반응형