例如,按行优先顺序和按列优先顺序列出四维数组A[2][2][2][2]所有元素在内存中的存储次序。11
例如,按行优先顺序和按列优先顺序列出四维数 组A[2][2][2][2]所有元素在内存中的存储次序。 11
解:按行优先的存储次序:A[o][o][o][o], A[o][o][o]],A[o1[ol[1l[o]A[0][o][][],A[0][][o][0],A[01[1][01]A[0][]][0], A/0]/1]/1]/1],A[11/ol/olo]A[1][0][][],A[][0][][0],A[][0][]];A[1]/1]/0][0],,A1/1/0/1,A/1//1/1//0lA[][1][1][]]12
解: 按行优先的存储次序: A[0][0][0][0], A[0][0][0][1], A[0][0][1][0], A[0][0][1][1], A[0][1][0][0], A[0][1][0][1], A[0][1][1][0], A[0][1][1][1], A[1][0][0][0], A[1][0][0][1], A[1][0][1][0], A[1][0][1][1], A[1][1][0][0], A[1][1][0][1], A[1][1][1][0], A[1][1][1][1] 12
按列优先的存储次序:A/ol/o/olrol,A[1oT[oo],A[o11[o[o]A[][][o][0], A[0][o][][], A[1][o][][0]A[0]1][1]|[0],A[1][1][1][0],A[0][0][0][1],A[1][0][0][],A[0][1][0][1],A[1][1][0][1]A/ol/ol[111l,A[1][0][1][1], A[0][1][1][1],A[][][1][]]13
按列优先的存储次序: A[0][0][0][0], A[1][0][0][0], A[0][1][0][0], A[1][1][0][0], A[0][0][1][0], A[1][0][1][0], A[0][1][1][0], A[1][1][1][0], A[0][0][0][1], A[1][0][0][1], A[0][1][0][1], A[1][1][0][1], A[0][0][1][1], A[1][0][1][1], A[0][1][1][1], A[1][1][1][1] 13
例如,C/C++中二维数组floata[5][4]的起始地址为2000,且每个数组元素长度为32位(即4个字节),求数组元素a[3][2]的内存地址。解:由于C/C++中数组的行、列下界均为0,又由于C/C++数组采用行序为主序的存储方式,所以有:LOC(a3,2)=LOC(a0.0)+[ix n+i]×k=2000+(3×4+2)×4-2056。14
例如,C/C++中二维数组float a[5][4]的起始地址为2000,且 每个数组元素长度为32位(即4个字节),求数组元素a[3][2]的 内存地址。 解:由于C/C++中数组的行、列下界均为0,又由于 C/C++数组采用行序为主序的存储方式,所以有: LOC(a3,2)=LOC(a0,0)+[i×n+j]×k =2000+(3×4+2)×4=2056。 14
6.1.3特殊矩阵的压缩存储特殊矩阵的主要形式有:(1)对称矩阵(2)上三角矩阵/下三角矩阵(3)对角矩阵它们都是方阵,即行数和列数相同。15
6.1.3 特殊矩阵的压缩存储 特殊矩阵的主要形式有: (1)对称矩阵 (2)上三角矩阵/下三角矩阵 (3)对角矩阵 它们都是方阵,即行数和列数相同。 15