gpt4 book ai didi

c - 了解 C 中的空指针

转载 作者:行者123 更新时间:2023-11-30 21:20:55 25 4
gpt4 key购买 nike

想象一下我有这个

main() {
int a = 5;
int *p;
printf("p: %d", (void*)p);
}

为什么我必须在 printf 语句中强制转换 *p?但如果我这样做...

p = &a;
printf("p: %d", *p);

这次我不用选角了?

所以我的问题是我是否需要每次都将 void 转换为空指针?

最佳答案

在第一个示例中,您正在打印指针本身的值,但使用了错误的格式说明符。

printf("p: %d", (void*)p);

应该是

printf("p: %p", (void*)p);

原因是,%d 指定的 int 可能与指针的大小不同。进行强制转换的原因是 %p 打印 void* 指针的值。但请注意:在您的示例中 int *p 未初始化,因此打印其值是无用的。

在第二个示例中,您将打印指针所指向的值,并且不需要强制转换,因为类型是一致的。

printf("p: %d", *p);

关于c - 了解 C 中的空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32977687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com