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
%p在printf格式化一个指针类型.这将区分空指针和打印,(nil)因为它是指针上下文中的特殊值.如果要为空指针输出0,请将指针强制转换为整数并使用%d:
printf("Head: %d\n", (int) front);
Run Code Online (Sandbox Code Playgroud)
原始答案,因为它可能仍然有用:
NULL是一个定义为0or 的宏((void *) 0),所以如果你设置一个指向NULL它的指针与设置它完全相同0.这适用于声明空指针的目的,因为地址0处的内存永远不会分配给您的程序.
小智 5
使用
printf("Head: %s, %d, %p\n", front, front, front);
Run Code Online (Sandbox Code Playgroud)
打印Head: (null), 0, (nil)
谢谢帕基亚
| 归档时间: |
|
| 查看次数: |
23805 次 |
| 最近记录: |