C++二维数组的问题,如下;请问如何解决?

int n = 3;
int p[] = {3,2,4,3};
int m[n+1][n+1];
int s[n+1][n+1];
cout<<"What's the division of Matrix A * B * C?"<<endl;
MatrixChain(p, n, m, s);
cout<<"It is "<<Traceback(1,n,s)<<endl;

[Error] cannot convert 'int (*)[(((sizetype)(((ssizetype)(n + 1)) + -1)) + 1)]' to 'int**' for argument '3' to 'void MatrixChain(int*, int, int**, int**)'
[Error] cannot convert 'int (*)[(((sizetype)(((ssizetype)(n + 1)) + -1)) + 1)]' to 'int**' for argument '3' to 'void Traceback(int, int, int**)'

定义数组时不能使用变量,可以const int n=3或int m[4][4]; int s[4][4];

把n+1改成四就可以了,数组定义不能用变量,你如果不确定数组大小,可以把他设的非常大,只要可以包含你需要的范围就可以了

使用枚举来定义n,如 enum {n=3;};

MatrixChain和Traceback设置成有返回值的函数

不要用变量定义数组长度,用const int n=数组长度。或者直接用数字,作为数组长度