=> ok buying your arguement that null_pointers can have => any value other than 0x000000. => => firstly where does a null_pointer gets its value => from.. I mean a NULL has to be defined somewhere => => ref: http://www.eskimo.com/~scs/C-faq/q5.4.html I read it and it cleared some of my doubts, thanks for the link. But still , I have one thing more to bug you guys (sorry, if I am actually bugging you). see below. => long start=(unsigned long)&((struct mystruct => *)0L)->num; => => here we have the definitions for the NULL pointer => being used. Hence, the outputs of printf should change => based on what NULL is defined (if your arguement sorry, i would say it as "based on what null-pointer is defined" (and not NULL). To be more specific "how null is internally stored or represented". => that the convertion to null_pointer does not happen. If this is what you are trying to prove then I would say that you are confusing between NULL and null-pointer (infact between NULL and the internal representation of the null-pointer) becoz zero, if used anywhere in the pointer context gets internally converted to the null-pointer. And I still assume that this is a pointer context. regards -neeraj -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/