C Interview Questions and Answers


How do I get a null pointer in my programs?

With a null pointer constant.

According to the language definition, an ``integral constant expression with the
value 0'' in a pointer context is converted into a null pointer at compile
time. That is, in an initialization, assignment, or comparison when one side is
a variable or expression of pointer type, the compiler can tell that a constant
0 on the other side requests a null pointer, and generate the correctly-typed null
pointer value. Therefore, the following fragments are perfectly legal:

char *p = 0;

if(p != 0)

However, an argument being passed to a function is not necessarily recognizable
as a pointer context, and the compiler may not be able to tell that an unadorned
0 ``means'' a null pointer. To generate a null pointer in a function call
context, an explicit cast may be required, to force the 0 to be recognized as a
pointer. For example, the Unix system call execl takes a variable-length, null-pointer-terminated
list of character pointer arguments, and is correctly called like this:

execl("/bin/sh", "sh", "-c", "date", (char

If the (char *) cast on the last argument were omitted, the compiler would not know
to pass a null pointer, and would pass an integer 0 instead. (Note that many Unix
manuals get this example wrong; When function prototypes are in scope, argument
passing becomes an ``assignment context,''

Posted by:Richards