[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 중요!>
[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 |