填空题
有以下程序:
main()
inf a[3][3],*p,i;
P=&a[0][0];
for(i=0;i<9;i++)p[i]=i;
for(i=0;i<3;i++)printf("%d¨,a[1][i]);
程序运行后的输出结果是______。
【正确答案】
1、3 4 5
【答案解析】[解析] 本题考查的是二维数组元素在内存中的排列形式。虽然二维数组或多维数组从结构上来看不是线性的,但是在C语言中,这些数组元素在内存中的排列是连续线性存放的。它们的排列规则是:第一维下标变化最慢,最右边的下标变化最快。例如本题中定义的二维数组a[3][3]中9个元素在内存中的排列顺序是:a[0][0],a[0][1],a[0][2],a[1][0],,a[1][1],a[1][2],a[2][0],a[2][1],a[2][2]。在主函数中,首先定义了二维数组a[3][3],然后定义了一个指针p指向数组a的第1个元素,第一个for循环是用指针对每一个元素赋值,赋值为元素所对应位置的序号,即a[i][j]=i*3+j,第二个for循环输出第二行的三个元素,即a[1][0]=3,a[1][1]=4,a[1][2]=5。