c语言中如(*P)[3]如果出现这*(*(P+i)+j)两个*是什么意思啊,求解啊

 我来答
zzu_liuwei
推荐于2017-12-16 · TA获得超过372个赞
知道小有建树答主
回答量:200
采纳率:0%
帮助的人:222万
展开全部
p为指向3个元素的一维数组的指针
p+i表示第i个包含3个元素的一维数组的首地址
*(p+i),对p+i解引用,得到p+i的内容,为一维数组p+i的首元素的首地址
*(p+i)+j,一维数组p+i的第j个元素的地址
*(*(p+i)+j),一维数组p+i的第j个元素的内容
如果p指向一个二维数组a[i][j],那么*(*(p+i)+j)等价于a[i][j]
追问
不是吧,p+i表示第i个包含3个元素的一维数组的首地址
那么*(p+i)不就是取该首地址的值吗
copylegend
2012-02-29 · TA获得超过345个赞
知道小有建树答主
回答量:282
采纳率:0%
帮助的人:207万
展开全部
我们这样来看
int arr[3] 这是一个大小为3的整型数组
那么
int (*p)[3] 这就是一个指向上述数组的指针
所以p+i也是一个指向上述数组的指针,即 *(p+i) 和上述数组是同类型的
那么 *(p+i)+ j 你就可以看成是 arr + j 了,就是指向上述数组第j个位子的指针,接着就是*号取值了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sun_siliang
2012-03-01 · TA获得超过2.6万个赞
知道大有可为答主
回答量:9913
采纳率:100%
帮助的人:4424万
展开全部
//举例说明。
int a[2][3]={1,2,3,4,5,6};
int (*p)[3]=a; //p的类型与a相同,这儿表示p指向数组第一行。
printf("%d\n",*(*(p+1)+1)); //*(*(p+1)+1)等价于a[1][1],这儿的值为5。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式