微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

这是下面的代码

#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 举报,一经查实,本站将立刻删除。