gpt4 book ai didi

c - 为什么当 "a+1"是一个 int 数组时, "&a+1"和 "a"给出不同的结果?

转载 作者:太空狗 更新时间:2023-10-29 16:45:46 25 4
gpt4 key购买 nike

int main()
{
int a[]={1,2,3,4,5,6,7,8,9,0};

printf("a = %u , &a = %u\n",a,&a);
printf("a+1 = %u , &a+1 = %u\n",a+1,&a+1);
}

a 和 &a 在内部是如何解释的?

最佳答案

这两个语句都打印出地址,可能是为了解释指针运算。

a&a 不一样,它们有不同的类型,但是拥有相同的内存地址。

&aint (*)[10] 类型(类似于指向数组的指针)
aint [10] 类型(类似于指向单个元素的指针)

因此,当您添加 1 时,请记住这些类型。指针将偏移地址包含的类型的大小。 a+1 按 int 的大小偏移,即到数组中的第二个元素。 &a+1 完全超出整个数组的偏移量。

关于c - 为什么当 "a+1"是一个 int 数组时, "&a+1"和 "a"给出不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2989370/

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