猿问

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

#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");
}

一步一瘸
浏览 2562回答 4
4回答

遥不可及不放弃

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

一步一瘸

 "(*(p+i))+j" 这个是自右向左运算的吗? 是先计算p+i,然后计算*,再计算+j ,  还是先计算p+i,再计算+j,后计算*.
随时随地看视频慕课网APP
我要回答