C++的小问题

来源:百度知道 编辑:UC知道 时间:2024/05/11 13:01:59
#include <iostream.h>

int main()
{
int Matrix1[3][4] = { {0,1,-4,8},{10,34,-2,-1},{12,-3,-7,9} };
int *pMatrix = Matrix1;

return 0;
}

error C2440: 'initializing' : cannot convert from 'int [3][4]' to 'int *'
怎样用指针指向多维数组的首地址?为什么出错呢?

把int *pMatrix = Matrix1;
更改为int *pMatrix = Matrix1[0];就可以了
因为编译器认为一维指针只能指向一维数组的首地址,而二维数组也是有多个一维数组组成的,所以只要给出二维数组第一个对象的首地址即可,当然也可以给Matrix1[1],那就是给出了第二个一维数组的首地址。

可以这样

int Matrix1[3][4] = { {0,1,-4,8},{10,34,-2,-1},{12,-3,-7,9} };
int *pMatrix[3];
for(int i=0;i<3;i++) pMatrix[i]= Matrix1[i];