首先要知道,无论是一维,二维还是多维,数组元素在内存中的存储位置也是顺序存储的,比如一个一维数组3个元素
a[0] a[1] a[2]
那么a[0]的地址是这个数组的首地址,a[1]相对a[0]偏移量是1个单位,a[2]相对a[0]偏移量是2个单位
比如一个二维数组3X3个元素(m=3,n=3,3行3列的数组)
a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2] a[2][0] a[2][1] a[2][2]
a[i][j]所在的地址是从a[0][0]算起到(i*n+j)个单位的地方。那么a[1][2]就是从a[0][0]算起到 1*3+2=5 个单位的地方,这个懂了,三维也是一样的
比如一个二维数组3X3X3个元素 m=3,n=3,p=3
a[0][0][0] a[0][0][1] a[0][0][2] a[0][1][0] a[0][1][1] a[0][1][2] a[0][2][0] a[0][2][1] a[0][2][2]
a[1][0][0] a[1][0][1] a[1][0][2] a[1][1][0] a[1][1][1] a[1][1][2] a[1][2][0] a[1][2][1] a[1][2][2]
a[2][0][0] a[2][0][1] a[2][0][2] a[2][1][0] a[2][1][1] a[2][1][2] a[2][2][0] a[2][2][1] a[2][2][2]
元素a[i][j][k]所在的地址是从
a[0][0][0]算起到(i*n*p+j*p+k)个单位的地方。就三维数组
a1[1][1][2]来算就是 1*3*3+1*3+2=14 就是从a[0][0][0]后面开始数第14个就是 这回可是懂了?要知道数组下标应该代哪个值
这个公式中的n和p是三维数组中的维数,你怎么给代入0了呢?那当然算的不对啦