|
发表于 2021-3-13 15:00:08
From FishC Mobile
|
显示全部楼层
|阅读模式
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
大家好 这个问题困扰我很久了
程序如下
#include <stdio.h>
int main()
{
int temp[5]={1,2,3,4,5};
int(*p2)[5]=&temp;
int I;
for(i=0;i<5;i++)
{
printf(“%d\n”,*(*p2+i));
};
return 0;
}
其中*(*p2+i)我难以理解
反推理解的话 (*p2+i)应该是数组元素的地址
i为步长 则*p2为数组首元素的地址
但p2本身就是数组的地址(也是首元素的地址)
如何理解*令我困扰
求各位指正!
temp 首元素地址 +1跳过一个元素的地址
&temp[0] 首元素地址 +1跳过一个元素的地址
&temp 数组的地址 +跳过整个数组的地址
p2只是数组的地址,不可以叫首元素地址,虽然数组地址和首元素地址值一样,但是不能混为一谈
int(*p2)[5]=&temp;
对p2解引用后*p=temp 和上边第一个是一个效果
|
|