读书人

C++ 多维数组指针解决方法

发布时间: 2012-10-21 09:00:07 作者: rapoo

C++ 多维数组指针
代码如下,

C/C++ code
int s[4][6] ,(*p1)[6], (*p2)[6];    p1 = s[1];    p2 = s + 1;


为什么 p1 编译不可以通过, p2 却可以编译通过。两者返回的不应该都是 s[1] 的地址?

报错如下
C/C++ code
error C2440: '=' : cannot convert from 'int [6]' to 'int (*)[6]'


[解决办法]
http://topic.csdn.net/u/20091123/11/0c03d2e2-0655-4634-8287-0e2315d889fc.html?79455
[解决办法]
因为p1是指向个行数组的指针 跟int s[4][6]中的s是一个等级的 所以p1不能p2能
[解决办法]
p1 = &s[1];
[解决办法]
二维指针实际上是一个矩阵。
你的P1本身是数组 又是指针所以能指向二维指针

而p2只是个一维指针,你说让一个一维空间指向2维空间怎么移动指针?
[解决办法]
C/C++没有多维数组,只有一维数组。

C/C++ code
int s[4][6]; //4个元素的数组,其中每个元素为 int [6](数组) 

读书人网 >C++

热点推荐