如何把二维,三维数组的地址传递给指针啊?

来源:百度知道 编辑:UC知道 时间:2024/06/24 09:54:26
一维我知道,比如a[2],只要把a传递给指针*p就行了,然后就可以对P进行++ --*操作,可是如果是a[2][3]呢,怎么传递啊?还有三维的a[2][3][4]

二维数组int a[2][3]对应的指针:int (*p)[3],p++则p指向数组的第二行,*p是a[1][0]的地址。
三维数组int a[2][3][4]对应的指针:int (*p)[3][4],p++则p指向数组的第二个二维数组。
以此类推,高维数组都是低维数组组成的数组。

简单数据类型的数组,不管几维,在内存里都是顺序存放。P++,P--就可以操作。
比如:对于a[2][3]
*P=a[1][3]; P++;
其实就指向了a[2][0],因为它排在a[1][3]后面。
可以自己写个小程序试试。先给个二维数组赋值,p指向首地址,再依次p++试试。

一楼正解。

传首地址:
1维 &a[0]
2维 &a[0][0]
3维 &a[0][0][0]