gpt4 book ai didi

c - 数组标识符和数组标识符地址的区别

转载 作者:行者123 更新时间:2023-12-04 00:46:24 27 4
gpt4 key购买 nike

我认为以下程序会清楚地说明我的疑问,所以我发布了该程序:

 #include <stdio.h>
int main() {

int a[]={1,2,3,4,5};
if(&a[0] == a)
printf("Address of first element of an array is same as the value of array identifier\n");
if(&a == a)
printf("How can a value and address of an identifier be same?!");

return 0;
}

这是输出的链接: http://ideone.com/KRiK0

最佳答案

当它不是sizeof的主题时或一元&运算符,数组的计算结果为指向其第一个元素的(非左值)指针。

所以&a是数组的地址 a , 和 a计算数组中第一个元素的地址,a[0] .

数组的地址和数组中第一个元素的地址相同并不奇怪(也就是说,尽管它们的类型不同,但它们指向相同的位置); struct也是如此s 也是。鉴于:

struct {
int x;
int y;
} s;

然后 &s&s.x指向相同的位置(但具有不同的类型)。如果转换为 void *他们将比较相等。这与 &a 完全类似和 &a[0] (因此只有 a )。

关于c - 数组标识符和数组标识符地址的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9407873/

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