C语言中如何用指针来取得多维数组地址的写法?

形如 unsigned char a[8][64][4]; 的多维数组,
我想用指针来表达数组地址,例如a[x][y]或a[x][y][z]怎么写成指针形式?
我写成(a+x*y*z)显然是不对的,求指教!多谢

首先可以肯定的是无论几维的数组在内存中存储时都是连续的,但是数组每个元素在内存中的排列方式具体是按照什么的规则来排呢?这主要取决与编译器,一般有按行排,也有按列排,也有其他的一些排法。所以如果你想用指针表示一个数组中某一个元素的地址,关键还是要了解数组在内存中的具体排列方式。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-24

一维的:

unsigned char a[8];
unsigned char *p = a;
unsigned char (*p) = a;

二维的:

unsigned char a[8][64];
unsigned char (*p)[64] = a;

三维的:

unsigned char a[8][64][4];
unsigned char (*p)[64][4] = a;

其实就是最高维度变成了指针

第2个回答  2013-09-24
应该是a+x*64*4+y*4+z吧。
第3个回答  2013-09-24
C语言中多维数组讨论
相似回答