指向数组的指针的值和指向数组的指针的值如何相同?

问题描述

这是下面的代码

#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;
}

编译后,"address of ptr" 和 "address of *ptr" 的输出结果相同。 输出

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

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

如果有什么不同,请解释一下。

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

或者是这样的,虽然ptr和*ptr指向同一个地址,但是以不同的方式指向,所以通过ptr指向整个数组,本质上是通过help指向整个数组数组第一个元素的地址。

同时

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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)