I am working on a project and I keep coming across this error that will not allow me to complete the project. When I initialize one of my pointers to point to an object that will be made during the execution of the program and I initialize it to NULL
. Then when I check to see what it is set to it returns a value of nil
. How is such a thing possible? I didn't believe that nil pointers existed in C. Is there any way around this?
struct order_line *front = NULL;
...
printf("Head: %p\n", front); // prints -> Head: (nil)
%p
in printf
formats a pointer type. This is going to distinguish a null-pointer and print (nil)
because it is a special value in the context of a pointer. If you want to output 0 for a null pointer, cast the pointer to an integer and use %d
instead:
printf("Head: %d\n", (int) front);
Original answer as it may still be useful:
NULL
is a macro defined as 0
or ((void *) 0)
, so if you set a pointer to NULL
it's exactly the same as setting it to 0
. This works for the purposed of declaring null pointers because the memory at address 0 will never be allocated to your program.