gpt4 book ai didi

c - C 数组中的指针地址

转载 作者:行者123 更新时间:2023-11-30 14:43:13 25 4
gpt4 key购买 nike

C 中字符串的名称是一个常量值,其中包含字符串第一个元素的地址。现在我的问题是:为什么这个常量变量和他的指针包含相同的地址?

char str[] = "hola";
printf("%p %p", &str, str);

这段代码的输出是:

0x7ffc9ab53f43 0x7ffc9ab53f43

但我希望读取两个不同的地址。

最佳答案

让我们看一下数组如何存储在内存中(插入指向元素的指针):

+--------+--------+--------+--------+--------+| str[0] | str[1] | str[2] | str[3] | str[4] |+--------+--------+--------+--------+--------+^|&str[0]|&str

指针&str[0](这是str衰减到的)指向数组的第一个元素。数组的第一个元素也是数组本身的地址。因此 (void *) &str[0] == (void *) &str 为 true。

关于c - C 数组中的指针地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54073201/

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