What exactly is meant by "de-referencing a NULL pointer"?
c, pointers
Solution
A `NULL` pointer points to memory that doesn't exist. This may be address `0x00000000` or any other implementation-defined value (as long as it can never be a real address). Dereferencing it means trying to access whatever is pointed to by the pointer. The `*` operator is the dereferencing operator:
int a, b, c; // some integers
int *pi; // a pointer to an integer
a = 5;
pi = &a; // pi points to a
b = *pi; // b is now 5
pi = NULL;
c = *pi; // this is a NULL pointer dereference
This is exactly the same thing as a `NullReferenceException` in C#, except that pointers in C can point to any data object, even elements inside an array.
Problem
I am a complete novice to C, and during my university work I've come across comments in code that often refer to de-referencing a NULL pointer. I do have a background in C#, I've been getting by that this might be similar to a "NullReferenceException" that you get in .Net, but now I am having serious doubts. Can someone please explain to me in layman's terms exactly what this is and why it is bad?