.\" Copyright (c) 2022 by Alejandro Colomar .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" .TH NULL 3const 2023-10-31 "Linux man-pages 6.7" .SH NAME NULL \- null pointer constant .SH LIBRARY Standard C library .RI ( libc ) .SH SYNOPSIS .nf .B #include .P .B "#define NULL ((void *) 0)" .fi .SH DESCRIPTION .B NULL represents a null pointer constant, that is, a pointer that does not point to anything. .SH CONFORMING TO C99 and later; POSIX.1-2001 and later. .SH NOTES The following headers also provide .BR NULL : .IR , .IR , .IR , .IR , .IR , .IR , and .IR . .SH CAVEATS It is undefined behavior to dereference a null pointer, and that usually causes a segmentation fault in practice. .P It is also undefined behavior to perform pointer arithmetic on it. .P .I NULL \- NULL is undefined behavior, according to ISO C, but is defined to be 0 in C++. .P To avoid confusing human readers of the code, do not compare pointer variables to .BR 0 , and do not assign .B 0 to them. Instead, always use .BR NULL . .P .B NULL shouldn't be confused with .BR NUL , which is an .BR ascii (7) character, represented in C as .BR \[aq]\e0\[aq] . .SH BUGS When it is necessary to set a pointer variable to a null pointer, it is not enough to use .BR memset (3) to zero the pointer (this is usually done when zeroing a struct that contains pointers), since ISO C and POSIX don't guarantee that a bit pattern of all 0s represent a null pointer. See the EXAMPLES section in .BR getaddrinfo (3) for an example program that does this correctly. .SH SEE ALSO .BR void (3type)