logo - 刷刷题
下载APP
【简答题】

分析下面的程序 , 比较二维数组元素 (*(p+i))[j] 与 *(p+i)[j] 的区别。 #include int main( ) { int a[4][3]={1,2,3, 4,5,6, 7,8,9, 10,11,12}; int (*p)[3]=a; //a 是二级地址 ,p 是指向数组的指针 int i,j,s1=0,s2=0; for(i=0;i<2;i++) //*(p+i) 是一级地址 , 即第 i 行行指针 for(j=0;j<3;j++) { s1=s1+(*(p+i))[j]; // 运算符 “[]” 的优先级高于运算符 “*” s2=s2+*(p+i)[j]; } // 先求数组元素的行下标和列下标 , 再取该数组元素的值 printf("s1="); for(i=0;i<2;i++) for(j=0;j<3;j++) printf("%d+",(*(p+i))[j] ); printf("\b=%d\n",s1); printf("s2="); for(i=0; i<2; i++) for(j=0; j<3; j++) printf("%d+",*(p+i)[j] ); //*(p+i)[j] 与 *((p+i)[j]) 等价 printf("\b=%d\n",s2); return 0; } 执行后输出的结果 :

举报
参考答案:
参考解析:
.
刷刷题刷刷变学霸
举一反三

【单选题】使用二维数组的数组名作为函数实参,其向形参传递的是()

A.
二维数组中首元素的值
B.
二维数组中首元素的地址
C.
二维数组中首行元素的行地址
D.
二维数组全部元素的值

【单选题】在下面的二维数组定义中,语法正确的选项是()。

A.
int a[5][];
B.
int a[][5];
C.
int a[][3]={{1,3,5},{2}};
D.
int a[](10);

【单选题】下面对二维数组array 的定义,正确的是( )。

A.
int array[][4];
B.
char array[3,4];
C.
float array (3)(4);
D.
float array[3][4];

【单选题】关于二维数组的有关说法,正确的是()

A.
数组中的所有元素都只有一个前趋结点和一个后继结点
B.
数组中的所有元素都具有至少一个直接前驱
C.
数组中的所有元素都具有至少一个直接后继
D.
开始结点没有直接前驱

【多选题】二维数组初始化正确的是()

A.
intarr[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
B.
intarr[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
C.
intarr[][4]={1,2,3,4,5,6,7,8,9,10,11,12};
D.
intarr[3][4]={{1,2,3},{4,5},{6}};