问题 单项选择题

下列程序的输出结果是
#include "stdio.h"
#define N 3
#define M 3
void fun(int a[M][N])
printf("%d\n",*(a[1]+2));
main()
int a[M][N];
int i,j;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
a[i][j]=i+j-(i-j);
fun(a);

A) 3
B) 4
C) 5
D) 6

答案

参考答案:B

解析: 若有以下定义:int a[3] [4],i,j;,且0≤i<3,0≤j<4,则可以有以下几种方式来引用数组中的第i行,第j列的元素:
a[i][j],*(a[i]+j),*(*(a+i)+j),(*(a+i))[j],*(&a[0][0]+4*i+j)。
赋值语句完成后数组中数据如下:
0 2 4
0 2 4
0 2 4
因为fun()函数打印的是第1行第2列的数据,所以为4。

单项选择题 A1/A2型题
单项选择题