定义二维数组 a[m][n]
直接寻址 = 间接寻址
a[i][j] = *(*(a+i)+j)
说明:
a+i 表示第i行的首地址
*(a+i)同*(a+i)+0 ,即&a[i][0]
*(a+i)+j 表示第i行的第j各元素的地址,即&a[i][j]
*(*(a+i)+j)即为间接寻址,表示a[i][j]
同理:
定义三维数组 a[p][m][n]
a[i][j][k] = *( *( *(a+i) +j) +k)
说明:
a 表示数组的首地址,即a[0],同&a[i][j][k]
a+i 表示第i个“面”的首地址,即 a[i]
*(a+i),即*(a+i)+ 0,表示第i个面第一行的首地址,即a[i][0],即&a[i][0][0]
*(a+i)+ j 得到第i个“面”的第j“行”的首地址,即a[i][j],即&a[i][j][0]
*(*(a+i)+ j)+ 0 得到第i个“面”的第j“行”的第1个元素的地址,即&a[i][j][0]
*(*(a+i)+ j)+ k 得到第i个“面”的第j“行”的第k个元素的地址,即&a[i][j][k]
*(*(*(a+i)+j)+k)得到第i个“面”的第j“行”的第k个元素,即a[i][j][k]
理解:
三维数组是一种多个平面组成的特殊的二维数组
A[p][m][n] = p * a[m][n]
抽象意义上,p在空间上表示前后有几个面,m表示每一个面上的行数,n表示每一行的列数
原文:https://www.cnblogs.com/guoyujiang/p/11715404.html