有一个二维数组A,行下标的范围是0到8,列下标的范围是1到5,每个数组元素用相邻的4个字节存储。存储器按字节编址。假设存储数组元素A[0,1]的第一个字节的地址是0,存储数组A的最后一个元素的第一个字节的地址是( B)A.132B.176C.188D.184
这个怎么我算出来是196
(9×5+4)×4
void fun(int *a, int *b, int *c, int *d)
{
int max,min;
max=*a;
min=*d;
if(*b>max){max=*b;}
if(*c>max){max=*c;}
if(*d>max){max=*d;}
if(*a<min){min=*a;}
if(*b<min){min=*b;}
if(*c<min){min=*c;}
*a=max;
*d=min;
}
你是不是算错了
每行有5个元素,每个元素占据4个字节,所以每行占据 5 * 4 = 20 字节。
总共有9行,所以总共占据 9 * 20 = 180 字节。
找的是数组A的最后一个元素A[8,5]的第一个字节的地址,而不是整个数组占据的字节数。A[8,5]位于第9行第5列,对应的地址是:
(9 - 1) * 20 + (5 - 1) * 4 = 8 * 20 + 4 * 4 = 160 + 16 = 176
所以是B.176。