在取消引用指向数组的指针时,我得到的地址与指向数组的指针相同

时间:2016-12-24 17:43:06

标签: c pointers pointer-to-array

#include<stdio.h>

int main(void)
{
   int arr[5]={1,2,3,4,5};
   int (*ptr)[5]=&arr;

   printf("ptr=%p\n",ptr);    i am not getting the diff btw both statements
   printf("*ptr=%p\n",*ptr);

   return 0;
}

output:- 
ptr=0xbf8f8178
*ptr=0xbf8f8178

我知道解引用指​​向数组的指针我们得到数组名称,数组名称表示基地址然后是两个语句之间的差异

2 个答案:

答案 0 :(得分:0)

两个指针具有相同的地址但具有不同的类型。

ptr是一个指向5个整数数组的指针。

*ptr是一个包含5个整数的数组。但是,当表达&#34;数组T&#34; type在除sizeof&之外的任何上下文中使用,它会自动转换为&#34;指向T&#34;的指针。 type,指向数组的第一个元素。在这种情况下,它成为指向int的指针。

显然,数组从与第一个元素相同的地址开始。

答案 1 :(得分:0)

printf中的第一个指针是指针指针

printf中的第二个指针指向第一个指针

指向的第一个元素

但两个指针的类型不同

enter image description here

看到这张图片

源:https://www.eskimo.com/~scs/cclass/int/sx9b.html