(零)C/C++中的指针

CF7*_*711 8 c c++ printing pointers format-specifiers

我正在处理一个项目,我不断遇到这个错误,不允许我完成项目.当我初始化我的一个指针指向将在程序执行期间生成的对象时,我将其初始化为NULL.然后,当我检查它的设置时,它返回一个值nil.这样的事情怎么可能?我不相信C中存在零指针.有什么方法可以解决这个问题吗?

struct order_line *front = NULL;
...
printf("Head: %p\n", front);  // prints -> Head: (nil)
Run Code Online (Sandbox Code Playgroud)

mar*_*cog 10

%pprintf格式化一个指针类型.这将区分空指针和打印,(nil)因为它是指针上下文中的特殊值.如果要为空指针输出0,请将指针强制转换为整数并使用%d:

printf("Head: %d\n", (int) front);
Run Code Online (Sandbox Code Playgroud)

原始答案,因为它可能仍然有用:

NULL是一个定义为0or 的宏((void *) 0),所以如果你设置一个指向NULL它的指针与设置它完全相同0.这适用于声明空指针的目的,因为地址0处的内存永远不会分配给您的程序.

  • 除非你定义了'nil',否则C中不存在'nil'. (2认同)

小智 5

使用

printf("Head: %s, %d, %p\n", front, front, front);
Run Code Online (Sandbox Code Playgroud)

打印Head: (null), 0, (nil)

谢谢帕基亚