gpt4 book ai didi

c - 我对静态数组上的指针算法感到困惑

转载 作者:行者123 更新时间:2023-12-05 02:25:37 24 4
gpt4 key购买 nike

<分区>

我可能有一个非常幼稚的问题(我不是 C 编程方面的专家),但我无法得到完全令人满意的解释。这里只是静态数组的声明和一些打印:

#include <stdlib.h>
#include <stdio.h>
void main() {
int N=3, a[N];
for (int i=0; i<N; i++) a[i] = 1000+i;
printf("&a = %p\n",&a);
printf("a = %p\n",a);
printf("*a = %d\n",*a);
printf("*(&a) = %d (as an int)\n",*(&a));
printf("*(&a) = %p\ (as a pointer)\n",*(&a));
}

输出是:

&a    = 0x7ffee9043ae0
a = 0x7ffee9043ae0
*a = 1000
*(&a) = -319989024 (as an int)
*(&a) = 0x7ffee9043ae0 (as a pointer)

由于 &aa 是相同的,在内存中显示相同的地址,所以我首先期待 *(&a) *a 也相同,都等于 1000

然后我想到了类型:a 显然被认为是一个 int*,所以 &a 是一个 int** 。结果是 *a 是一个 int,而 *(&a) 是一个 int*:它们不是类型相同,后者是指针。

这是有道理的...但我的问题是:为什么 &aa 首先是相同的?

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