gpt4 book ai didi

c - C 中使用 %p 的变量地址

转载 作者:太空宇宙 更新时间:2023-11-04 06:14:05 25 4
gpt4 key购买 nike

例如,

int a = 6;
printf("%p", &a);

这会打印出右指针的地址吗?但是如果我们不使用 & 打印呢?

int a = 6;
printf("%p", a);

谁能告诉我打印出来的是什么?

最佳答案

这是未定义的行为,因为 %p 需要一个 void*

printf("%p", a);

允许添加显式转换,但行为是实现定义的:

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

“实现定义”意味着编译器在将 int 转换为 void* 时可以自由地做任何它想做的事。参见 this Q&A从标准中获取准确的报价。

在许多实现中,您会看到一个指针分配了 int ( demo 1 ) 的数值。其他实现会警告您该行为毫无意义。如果您将警告视为错误,代码将无法编译 ( demo 2 )。

关于c - C 中使用 %p 的变量地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49840774/

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