gpt4 book ai didi

c - 使用 & 运算符和不使用 & 运算符的地址有什么区别?

转载 作者:行者123 更新时间:2023-11-30 19:01:35 25 4
gpt4 key购买 nike

我遇到了一个指针变量的两个不同地址。我不知道它们是什么意思。为什么两个输出有两个不同的地址?

char *name = "John";
printf("is stored at %p\n",name ); //output that is showed "is stored at 0x558b8c21e9c4"
printf("print on the screen %p\n",&name);//output that is showed "print on the screen 0x7ffd8b9be710"

最佳答案

变量name包含字符串文字“John”的地址。

所以这个电话

printf("is stored at %p\n",name );

输出字符串第一个字符的地址。

表达式&name包含变量name的地址,并且具有类型char **而不是类型char * 因此,printf 的第二次调用输出变量 name 本身的地址,而不是字符串文字的地址。

您应该将输出的指针转换为 void * 类型。例如

printf("is stored at %p\n", ( void * )name );

关于c - 使用 & 运算符和不使用 & 运算符的地址有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57597458/

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