Actually C doesn't have NULL either. It just has various (sometimes incompatible) variations on #define NULL 0. However 0 as a value for pointers in C is magical in a sort of similar fashion to the magic represented by undef in Perl.
DWIM is Perl's answer to Gödel
| [reply] [d/l] [select] |
Check the C standard. It has a NULL. How it's implemented is implementation defined, which means it could be anything. Section 7.1.6 of the 1990 standard (yes, there's a 1999 standard - I don't have a copy of that) includes the text:
The macros are
which expands to an implementation-defined null pointer constant
You're confusing C with C++ which defines NULL to be equivalent to the integer constant 0. Normally in C, the define is actually (void*)0.
| [reply] |
Umm, no, actually I was thinking of K&R C. In "The C Programming Language (Second edition)" (I haven't the first handy) it says:
The symbolic constant NULL is often used in place of zero, as a mnemonic to indicate more clearly that this is a special value for a pointer.
It was variations on (void*)0 that I was alluding to as being a cause of grief in some rare cases (none of which I can think of at the moment, and probably all in a C++ context in any case).
Actually NULL is not defined by C++ either, athough in "The C++ Programming Language (Third Edition)" Stroustrup comments:
Because of C++'s tighter type checking, the use of plain 0, rather than any suggested NULL macro, leads to fewer problems.
then goes on to suggest:
If you feel you must define NULL, use: const int NULL = 0;
None of which is relevant to very much, except to help highlight how little of the what people think of as C is in fact part of the C language.
DWIM is Perl's answer to Gödel
| [reply] [d/l] |