blob: 663c89220d6c2b3ecd466730d51c5399a2c3a477 [file] [log] [blame]
<html lang="en">
<head>
<title>Null Pointer Constant - The GNU C Library</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="The GNU C Library">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Language-Features.html#Language-Features" title="Language Features">
<link rel="prev" href="Variadic-Functions.html#Variadic-Functions" title="Variadic Functions">
<link rel="next" href="Important-Data-Types.html#Important-Data-Types" title="Important Data Types">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
This file documents the GNU C library.
This is Edition 0.12, last updated 2007-10-27,
of `The GNU C Library Reference Manual', for version
2.8 (Sourcery G++ Lite 2011.03-41).
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
2003, 2007, 2008, 2010 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being ``Free Software Needs Free Documentation''
and ``GNU Lesser General Public License'', the Front-Cover texts being
``A GNU Manual'', and with the Back-Cover Texts as in (a) below. A
copy of the license is included in the section entitled "GNU Free
Documentation License".
(a) The FSF's Back-Cover Text is: ``You have the freedom to
copy and modify this GNU manual. Buying copies from the FSF
supports it in developing GNU and promoting software freedom.''-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
<link rel="stylesheet" type="text/css" href="../cs.css">
</head>
<body>
<div class="node">
<a name="Null-Pointer-Constant"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Important-Data-Types.html#Important-Data-Types">Important Data Types</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="Variadic-Functions.html#Variadic-Functions">Variadic Functions</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Language-Features.html#Language-Features">Language Features</a>
<hr>
</div>
<h3 class="section">A.3 Null Pointer Constant</h3>
<p><a name="index-null-pointer-constant-3736"></a>
The null pointer constant is guaranteed not to point to any real object.
You can assign it to any pointer variable since it has type <code>void
*</code>. The preferred way to write a null pointer constant is with
<code>NULL</code>.
<!-- stddef.h -->
<!-- ISO -->
<div class="defun">
&mdash; Macro: void * <b>NULL</b><var><a name="index-NULL-3737"></a></var><br>
<blockquote><p>This is a null pointer constant.
</p></blockquote></div>
<p>You can also use <code>0</code> or <code>(void *)0</code> as a null pointer
constant, but using <code>NULL</code> is cleaner because it makes the purpose
of the constant more evident.
<p>If you use the null pointer constant as a function argument, then for
complete portability you should make sure that the function has a
prototype declaration. Otherwise, if the target machine has two
different pointer representations, the compiler won't know which
representation to use for that argument. You can avoid the problem by
explicitly casting the constant to the proper pointer type, but we
recommend instead adding a prototype for the function you are calling.
</body></html>