现有如下程序段 #include"stdio.h" main() { int a[5][6]={23,3,65,21,6,78,28,5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,

admin2010-12-10  26

问题 现有如下程序段    #include"stdio.h"    main()    {  int a[5][6]={23,3,65,21,6,78,28,5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,    1};    int i=0,j=5;    printf("%d\n",*(&a[0][0]+2*i+j-2));}    则程序的输出结果为   

选项 A、21     
B、78
C、23     
D、28

答案A

解析  通过地址来引用二维数组,若有以下定义:int a[3][4],i,j;且当0≤i<3,0≤j<4,则可以有以下几种方式来引用数组中的第i行,第j列的元素:a[j], *(a+j),*(*(a+i)+j),(*(a+i))[j],*(&a[0] [0]+4*i+j)。表达式&a[0][0]+2*i+j-2相当于是地址&a[0][0]加上多少偏移量。
转载请注明原文地址:https://kaotiyun.com/show/FnPp777K
0

最新回复(0)