<aside> <img src="/icons/light-bulb_gray.svg" alt="/icons/light-bulb_gray.svg" width="40px" /> 요약
1. NUL과 ‘\0’은 같고, NUL과 ‘0’은 다르다.
출처: https://www.ascii-code.com/
Definition | Data Type | |
---|---|---|
NUL | ASCII코드의 Symbol 값 NUL | char |
‘\0’ | ASCII코드의 OCT값 | char |
'0’ | ASCII코드의 Symbol 값 0 | char |
Definition | Data Type | Type Coversion | |
---|---|---|---|
NULL | NULL 포인터 0x00000000 | pointer(void *)0 | (포인터변수)0 |
0 | 정수 0 | int | (포인터변수)NULL, (문자열변수)NUL |
NUL | ASCII코드의 Symbol 값이 NUL | char | (문자열변수)0 |
//변수 초기화하는 법
char val = '\\0';
char val = 0;
int val = 0;
//배열 초기화하는 법
char val[10] = {'a', 'b', 'c', '\\0'}; //문자열의 끝을 알림
char val[10] = {0};
//포인터변수 초기화하는 법
char *ptr = NULL
char *ptr = 0
//주의: int val = NULL과 int val = 0 은 다르다
</aside>
NUL은 ASCII코드에서 문자 NUL을 나타낸다.
주로 문자열 처리에서 문자열의 끝을 나타내는 종료문자로 사용됨.
출처: https://www.ascii-code.com/
‘\0’은 ASCII코드를 사용할 때 쓰는 문법. ‘\0’은 ASCII코드의 NUL을 의미한다. 백슬래쉬(\) 뒤에 ASCII코드의 8진수(OCT)값을 넣어줄 때, 정수로 출력하면(%d) ASCII코드의 10진수 값이, 문자로 출력하면(%c) ASCII코드이 Symbol 값이 출력된다.
#include <stdio.h>
int main(void)
{
int a = '\\0';
char b = '\\0';
int c = '\\101';
char d = '\\101';
printf("%d\\n", a);
printf("%c\\n", b);
printf("%d\\n", c);
printf("%c\\n", d);
return (0);
}
출처: https://www.ascii-code.com/
NUL(‘\0’)은 ASCII코드의 8진수(OCT)를 가리키고, ‘0’은 ASCII코드의 Symbol을 가리킨다.
#include <stdio.h>
int main(void)
{
int a = '\\0';
char b = '\\0';
int c = '0';
char d = '0';
printf("%d\\n", a);
printf("%c\\n", b);
printf("%d\\n", c);
printf("%c\\n", d);
return (0);
}
C언어에서 char은 8비트 정수형 처리 변수이다. C언어에선 문자와 정수 타입간의 암묵적 형변환이 발생하므로, 아래 코드에서 모두 같은 결과값이 출력된다.
#include <stdio.h>
int main(void)
{
char a = '\\0';
char b = 0;
int c = '\\0';
int d = 0;
printf("%d\\n", a);
printf("%c\\n", a);
printf("%d\\n", b);
printf("%c\\n", b);
printf("%d\\n", c);
printf("%c\\n", c);
printf("%d\\n", d);
printf("%c\\n", d);
return (0);
}