首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-10-21 
C++ 多维数组指针代码如下,C/C++ codeint s[4][6] ,(*p1)[6], (*p2)[6]p1 s[1]p2 s + 1为什么 p1

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](数组) 

热点排行