#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
我知道解引用指向数组的指针我们得到数组名称,数组名称表示基地址然后是两个语句之间的差异
答案 0 :(得分:0)
两个指针具有相同的地址但具有不同的类型。
ptr
是一个指向5个整数数组的指针。
*ptr
是一个包含5个整数的数组。但是,当表达&#34;数组T&#34; type在除sizeof
或&
之外的任何上下文中使用,它会自动转换为&#34;指向T&#34;的指针。 type,指向数组的第一个元素。在这种情况下,它成为指向int的指针。
显然,数组从与第一个元素相同的地址开始。
答案 1 :(得分:0)
printf中的第一个指针是指针指针
printf中的第二个指针指向第一个指针
指向的第一个元素但两个指针的类型不同
看到这张图片