gpt4 book ai didi

c - 内存地址

转载 作者:行者123 更新时间:2023-11-30 18:44:58 25 4
gpt4 key购买 nike

在此代码中,

int a[] = {1, 2, 3, 4, 5};
printf("a = %p, &a = %p\n", a, &a);

a的相同地址和&a被打印。据我所知,a是指向数组第 0 个元素的 const 指针。为什么地址是a和内容相等吗?

最佳答案

Why address of a and contents of it are equal?

他们不是。

在大多数情况下,数组类型的变量会衰减为指向第一个元素的指针。因此

printf("1. %p, 2. %p", (void*)a, (void *)&a[0]);

将打印相同的值。

也就是说,数组的地址与数组第一个元素的地址相同,因此

 printf("1. %p, 2. %p", (void*)a, (void*)&a);

也打印相同的。但是,请记住,它们不是同一类型。

  • a,在本例中与 &a[0] 相同,类型为 int *
  • &a,类型为 int *[5],即指向 5 个 int 数组的指针。

关于c - 内存地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56020339/

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