user950891
user950891

Reputation: 971

In C, is there a difference between a NULL pointer and a pointer that points to 0? If so, what?

In C, what is the difference between a NULL pointer and a pointer that points to 0?

Upvotes: 6

Views: 1027

Answers (5)

Sadique
Sadique

Reputation: 22821

The ISO/IEC 9899:TC2 states in 6.3.2.3 Pointers

3 An integer constant expression with the value 0, or such an expression cast to type void *, is called a null pointer constant.55) If a null pointer constant is converted to a pointer type, the resulting pointer, called a null pointer, is guaranteed to compare unequal to a pointer to any object or function

The macro NULL expands to an implementation-defined null pointer constant.

Any two null pointers shall compare equal.

Upvotes: 7

David Heffernan
David Heffernan

Reputation: 612963

Yes there is. The standard dictates that NULL always points to invalid memory. But it does not state that the integer representation of the pointer must be 0. I've never come across an implementation for which NULL was other than 0, but that is not mandated by the standard.

Note that assigning the literal 0 to a pointer does not mean that the pointer assumes the integer representation of 0. It means that the special null pointer value is assigned to the pointer variable.

Upvotes: 6

Cratylus
Cratylus

Reputation: 54074

The idea is that a NULL pointer should somehow represent a memory area that is invalid.
So since in the lower memory segments the OS code is mapped, the value of 0 has been used (to represent the NULL pointer) since this area in memory does not belong to the user's program but is mapped to the OS code.

Upvotes: 0

Clinton Pierce
Clinton Pierce

Reputation: 13159

The old comp.lang.c FAQ has a big section on the null pointer and it's worth a read.

comp.lang.c null pointers

Upvotes: 1

Graham Borland
Graham Borland

Reputation: 60681

Evaluating the literal 0 in a pointer context is identical to NULL. Whatever bit pattern the compiler uses to represent a NULL pointer is hidden.

Upvotes: 3

Related Questions