gpt4 book ai didi

c - 数组静态声明中第一个元素的地址

转载 作者:太空狗 更新时间:2023-10-29 16:50:49 26 4
gpt4 key购买 nike

int main()
{
int a[3]={1,10,20};
printf("%u %u %u \n" ,&a,a,&a[0]);
return 0;
}

这为所有三个打印相同的值。我知道 a 和 &a[0] 是一样的,但 &a 怎么也一样?

最佳答案

为了获得最大的兼容性,您应该始终使用 %p 并显式转换为 void* 以使用 printf 打印指针值。

当数组的名称在表达式上下文中使用而不是作为 sizeof 或一元 & 的操作数时,它会衰减到指向其第一个元素的指针。

这意味着 a&a[0] 具有相同的类型 (int*) 和值。 &a 是数组本身的地址,因此类型为 int (*)[3]。数组对象从它的第一个元素开始,所以数组第一个元素的地址将与数组本身的地址具有相同的值,尽管表达式 &a[0]&a 有不同的类型。

关于c - 数组静态声明中第一个元素的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6472662/

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