C/C++에서는 0=NUL='\0'이다.
NUL과 NULL은 다르다!
NULL은 숫자 0으로 #define되어 있다.
->그렇다면 NULL과 NUL은 같은 것 아님?
<NULL vs NUL 중요!>
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 |