In C, there appear to be differences between various values of zero -- `NULL`, `NUL` and `0`.I know that the ASCII character `'0'` evaluates to `48` or `0x30`.The `NULL` pointer is usually defined as: #define NULL 0Or #define NULL (void *)0In addition, there is the `NUL` character `'\\0'` which seems to evaluate to `0` as well.Are there times when these three values can not be equal?Is this also true on 64 bit systems?
The null character is just another character like 'a' and '?'. All characters are mapped to a value and the decimal value of the null character is 0. The null pointer is like you mentioned just a definition of a pointer with the address 0. The address of 0 usually always has the value of 0 too. Modern programming languages do not allow you to modify the value at that address (can't do *NULL = 42). So all these forms of NULL all equate to the value of zero and that does not change unless you are in some old language like some versions of COBOL which allow you to modify the value at any address including address 0x0.