为了账号安全,请及时绑定邮箱和手机立即绑定

c语言指针怎么运算的, "(*(p+i))+j" 这个是自右向左运算的吗? 是先取p+i的值,还有"(*p)[5]"是什么作用?

c语言指针怎么运算的, "(*(p+i))+j" 这个是自右向左运算的吗? 是先取p+i的值,还有"(*p)[5]"是什么作用?

C
一步一瘸 2017-08-14 11:08:34
#include<stdio.h>main(){ int a[3][5],i,j,(*p)[5]; p=&a[0]; printf("please input:\n"); for(i=0;i<3;i++)        /*控制二维数组的行数*/  for(j=0;j<5;j++)       /*控制二维数组的列数*/   scanf("%d",(*(p+i))+j);     /*为二维数组中的元素赋值*/  p=&a[2];         /*p为第一个元素的地址*/  printf("the third line is:\n");   for(j=0;j<5;j++)    printf("%5d",*((*p)+j));    /*输出二维数组中的元素*/   printf("\n");}
查看完整描述

4 回答

?
遥不可及不放弃

TA贡献15条经验 获得超5个赞

指针运算看运算符优先级,这个有点多。得百度,(*p)[5],这个是一个数组指针,他是一个指针,指向的大小是一个数组[5]这么大。

查看完整回答
反对 回复 2017-08-17
?
一步一瘸

TA贡献3条经验 获得超1个赞

 "(*(p+i))+j" 这个是自右向左运算的吗? 是先计算p+i,然后计算*,再计算+j ,  还是先计算p+i,再计算+j,后计算*.

查看完整回答
反对 回复 2017-08-14
  • 4 回答
  • 0 关注
  • 2561 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信