二维数组F的行下标为2至6,列下标为1至8,F的每个数据元素均占4个字节。在按列存贮的情况下,已知数据元素F[3,2]的第一个字节是2054,则F[3,4]和F[4,3]的第一个字节的地址分别为(35)和(36),而数组的第一个数据元素的第一个字节和数组最

admin2019-04-30  25

问题 二维数组F的行下标为2至6,列下标为1至8,F的每个数据元素均占4个字节。在按列存贮的情况下,已知数据元素F[3,2]的第一个字节是2054,则F[3,4]和F[4,3]的第一个字节的地址分别为(35)和(36),而数组的第一个数据元素的第一个字节和数组最后一个元素的最后一个字节的地址分别为(37)和(38)。对一般的二维数组G而言,当(39)时,共按行存储的G[I,J]的地址与按列存储的G[J,I]的地址相同。

选项 A、C的列数与行数相同
B、G的列的上界与G的行的上界相同
C、G的列的下界与G的行的下界相同
D、G的列的上下界与G的行的上下界相同

答案D

解析 该数组可看作为5×8的矩阵,已知其元素F[3][2]首地址为2054,则F[3][4]首地址为:F[3][2]+ (4-2*5*4+(3-3)*4=2054+40=2094.F[4][3]首地址:F[3][2]+(3-2)*5*4+(4-3)*4=2078。首元素首字节地址F[2][1]=F[3][2]-(2-1)*5*4-(3-2)*4=2030。量后字节的地址为:F[6][8]=F [3][2]+6*5*4+3*4*3=1180-1=1179,注意最后一个元素的最后一个字节地址的计算方法。
   上面的各次计算可以推导出一个公式:
   已知F[a]的首地址,每列有n个元素,每个元素占m个字节,则F[x][y]首址为:
   F[a]+(y-b)*n*m+(x-a)*m。
   按行存储的G[I,J]的地址与按列存储的G[J,I]的地址相同时,则G的列的上下界与G的行的上下界相同。
按行G[j]=S+(i-r)*Lr+j-1.按列G[j]=S+(i-1)/L1+j-r其中,r,1分别为行、列的上后,Lr与L1分别为行长度和列长度,显然,若要二者相等,则有r=1;Lr=L1。即:列的上下界与行的上下界相同。
转载请注明原文地址:https://jikaoti.com/ti/wtL7FFFM
0

最新回复(0)