【发布时间】:2022-01-12 19:20:18
【问题描述】:
如果我有一个 int 数组 intArr[4] 并得到它指向的地址,就像这样
printf("%p\n", intArr,);
然后得到数组的地址
printf(“%p\n”, &intArr);
两个语句返回相同的地址
0xffffcc14
0xffffcc14
然后,当它通过 intArr[0] 或 *intArr 取消引用时,它会给出一个整数值。
所以我想知道发生了什么,使数组看起来好像在同一个内存位置同时保存了两个东西:一个指向自身的指针值和一个元素值?
【问题讨论】:
-
它没有。数组在传递给
printf时会衰减为指针,因此会打印第一个元素 的地址值。当&intArr被打印时 - 它是数组本身的地址,出于显而易见的原因,它与第一个元素相同。
标签: arrays c pointers memory implicit-conversion