0

这是下面的代码

#include<stdio.h>
int main()
{
     int arr[5] = {1,2,3,4,5};
     int (*ptr)[5] = &arr;

     printf("address of ptr = %p\nadress of *ptr = %p\n", ptr, *ptr);
     
     return 0;
}

编译后,“ptr 的地址”和“*ptr 的地址”的输出结果是相同的。输出 :

address of ptr = 0x7fc20edcc0
adress of *ptr = 0x7fc20edcc0

这是否意味着 ptr 在某种程度上或确切地说是指向指针的指针?如果是,那么 ptr 和 *ptr 的地址如何相同。

如果这是不同的东西,请解释一下。

此外,我们将“&arr”保存在指向数组的指针中,这意味着数组 arr 的第一个元素的地址,如果这是正确的,那么 ptr & *ptr 也应该指向某个不同的位置。

还是像这样的东西,虽然ptr和*ptr指向同一个地址,但是以某种不同的方式,所以ptr指向整个数组,本质上是在地址的帮助下指向整个数组数组的第一个元素。

尽管

*ptr 是指向数组元素的普通指针。

4

0 回答 0