
화면상에 표시되지 않고 바이트 상으로 존재하는 제어 문자(control character)이다.
이러한 제어 문자는 컴퓨팅 및 전자통신 환경에서 사용되는 특별한 문자인데
출력 가능한 문자가 아닌, 컴퓨터나 장치에서 특수한 동작을 지시하는 문자를 말한다.
| 제어문자 | 의미 | ASCII 코드 (10진수) |
|---|---|---|
| \n | 줄 바꿈 (new line) | 10 |
| \t | 탭 (tab) | 9 |
| \r | 캐리지 리턴 (carriage return) | 13 |
| \b | 백스페이스 | 8 |
| \0 | 널 문자 (null character) | 0 |

#include <iostream>
using namespace std;
int main() {
int* ptr = nullptr;
cout << ptr << endl;
return 0;
}

nullptr이 가리키는 주소는 0번 (0x0)을 나타낸다.명시적으로 해당 변수에 참조 없음을 표현하기 위함이다.
User user = null; // 아직 아무 사용자도 할당되지 않음
이처럼 null을 사용하면 코드 작성자의 의도를 명확히 표현할 수 있다.
if (cache == null) {
cache = new Cache(); // 처음 접근할 때만 초기화
}
String s = null;
s.length(); // NullPointerException 발생
Node current = head;
while (current != null) {
current = current.next;
// 연결 리스트나 트리 같은 자료구조에서 null은 끝을 나타낸다.
}
#define NULL ((void *)0)
int *ptr = NULL;
if (ptr == NULL) {
printf("예외 처리\n");
}
int *ptr = NULL;
printf("%d\n", *ptr); // NULL 포인터 역참조 → Segmentation Fault 발생
if (ptr != NULL) {
printf("%d\n", *ptr);
} else {
printf("포인터가 NULL입니다.\n");
}
malloc, calloc 사용 시 NULL 체크 필수int *arr = malloc(sizeof(int) * 10);
if (arr == NULL) {
// 메모리 할당 실패 처리
}
#define NULL 0
NULL == 0 때문에 정수와 포인터 사이의 경계를 구분하기 어렵고, 오버로딩에서 문제가 발생하였다.
그래서 nullptr이라는 명확한 포인터 타입 리터럴이 도입되었다.
#include <iostream>
#include <cstddef> // for std::nullptr_t
void func(int) {
std::cout << "정수(int) 버전 호출됨\n";
}
void func(char*) {
std::cout << "char* 포인터 버전 호출됨\n";
}
int main() {
func(0); // 출력: 정수(int) 버전 호출됨
func(NULL); // 출력: 정수(int) 버전 호출됨
func(nullptr); // 출력: char* 포인터 버전 호출됨
return 0;
}

NULL은 컴파일러에 따라 ((void*)0) 또는 0으로 정의될 수 있어,func(NULL) 호출 시 어떤 함수를 선택해야 할지 모호해진다.nullptr를 사용하면 이러한 모호성(ambiguity)을 피할 수 있다.int* ptr = nullptr; // C++11 이후 권장
nullptr로 초기화하자.if (ptr != nullptr) {
doSomething(ptr);
}
void log(User* user) {
if (user == nullptr) {
std::cerr << "user is null!" << std::endl;
return;
}
std::cout << user->name << std::endl;
}
nullptr 체크는 예외 안전성을 높여준다.delete ptr;
ptr = nullptr; // dangling pointer 방지
nullptr로 초기화해서 다시 접근 시 오류가 바로 나게 하자.null? 더 이상 두렵지 않다.
null 사랑해는 뭔가요🤷🏻♀️