在g ++中,NULL定义为__null,在64位情况下,__null是8个字节。如:
printf("sizeof(__null):%d, sizeof(0):%d\n", sizeof(__null), sizeof(0));
sizeof(__null):8, sizeof(0):4
但是,__null定义在哪里?
答案 0 :(得分:7)
__null
的实现是作为G ++内部的。你不会在头文件或类似的东西中找到它。您可以找到逻辑here的一些解释,但基本思想是确保NULL首先被视为指针的最简单方法。
基本上,内部会做你天真地期望reinterpret_cast<void *>(0)
做的事情。