본문 바로가기

코딩/C++,C

[C/C++] 널 문자(\0)와 NULL

simsimjae.tistory.com/35

 

[c/c++] 널문자 0 '\0' 널문자열 NULL 의 차이 및 개념

우선 아스키 코드표를 보자 아스키 코드에 대해서 간단히 설명 하자면 ANSI에서 제정한 문자 코드 표 이며, 간단히 말하자면 1바이트로(8비트) 128개의 문자를 표현한것이다. 8비트는 2의8승개의 서

simsimjae.tistory.com

C/C++에서는 0=NUL='\0'이다.

 

NUL과 NULL은 다르다!

NULL은 숫자 0으로 #define되어 있다.

->그렇다면 NULL과 NUL은 같은 것 아님?

 

<NULL vs NUL 중요!>

noirstar.tistory.com/16

 

[C/C++]NULL, NUL, 0, \0 의 차이점을 알아보자.

코드를 짜다보니 NULL , NUL, 0, \0 이것들의 차이점이 문득 궁금해졌습니다. 인터넷을 뒤져보니 이미 많은분들이 이것들의 차이점에 대해 적어 놓으셨더라구요. 헷갈릴 수있는 것들이기에 자세하

noirstar.tistory.com

ASCII코드에서 0~9까지의 숫자는 0x30~0x39까지에 할당되어 있다.

null은 java에 있다. C/C++에서는 null없다. NULL과 NUL만이 있을 뿐.

배열의 크기를 완전히 초기화 하지 못하고 일부만 초기화 했을 때 나머직 공간은 모두 NULL로 채워진다.

NULL은 void포인터라며??

 

실제로 실험해본 결과


    char arr[10]="HelloHelo";
    for(int i=0;i<10;i++){
            if(arr[i]==NULL){
                cout<<"this is NULL";
            }
        cout<<arr[i]<<endl;

 

의 코드에서 NULL은 잘 동작함. NULL이 잘 동작하는 이유는 000000000000으로 정의가 되어 있기 때문. 실제로 int a=NULL; 해서 a출력 해보면 0이 출력된다.

NULL 대신

NUL을 쓰면 선언이 안되었다고 에러 뜸. 심지어 컴파일러가 NULL을 사용하려던게 아니냐고 물음.

0을 쓰면 잘 동작함.

'\0'을 써도 잘 동작함.

 

->결론 NUL은 없다고 생각하고 쓰지말자!

0, '\0', NULL 3개 모두 잘 동작하니깐 이 3개만 쓰자!

 

'코딩 > C++,C' 카테고리의 다른 글

[C/C++] stdin, stdout의 정체?  (0) 2021.03.23
[C/C++]dangling pointer(허상 포인터)  (0) 2021.03.21
[C/C++]포인터와 버스  (0) 2021.03.11
[C/C++]gcc컴파일러 옵션  (0) 2021.03.09
[C/C++]가상함수 virtual  (0) 2021.03.06