若有数组声明a[0..3,0..2,1..4],设编译时为a分配的存储空间首地址为base_a,且每个数组元素占据一个存储单元。当元素以行为序存放(即按a[0,0,1],a[0,0,2],a[0,0,3], a[0,0,4],a[0,1,1],a[0,1,

admin2019-06-12  33

问题 若有数组声明a[0..3,0..2,1..4],设编译时为a分配的存储空间首地址为base_a,且每个数组元素占据一个存储单元。当元素以行为序存放(即按a[0,0,1],a[0,0,2],a[0,0,3], a[0,0,4],a[0,1,1],a[0,1,2],…,a[3,2,4]顺序存储),则数组元素a[2,2,2]在其存储空间中相对base_a的偏移量是(21)。

选项 A、8
B、12
C、33
D、48

答案C

解析 本题考查数据结构的多维数组,是常考的知识点。
    以前学过的是二维数组的存储,按“行”或“列”来保存,然后求某元素相对于首地址的偏移量。但这个题目是考查三维数组,更复杂,但是道理是一样的。按“行”序来存,仍是从最后一维开始,再往左到第一维进行变化。题目中数组口的大小为5行、4列、4纵,这里要注意题目给出的下标,则数组元素a[2,2,2]的位置处在第3行、第3列、第2纵,求它的偏移量分两部分,第一部分,前两行的偏移位置是2*4*4=32;第二部分,在第3行的偏移位置是2*4+2=10,但计算偏移位置是本位置之前的大小,所以是10-1=9。则数组元素a[2,2,2]在其存储空间中相对base_a的偏移量是32+9=41,C选项正确。
转载请注明原文地址:https://kaotiyun.com/show/FdRZ777K
0

随机试题
最新回复(0)