问题描述
这是下面的代码
#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 (将#修改为@)