我试图将二维字符数组放入函数中,但问题是: 两个维度的大小都是在主函数中使用“const int”参数声明的,我无法更改该部分。如果我现在尝试编译程序,编译器会说数组的大小未声明。
我试图通过使用指针和引用运算符来解决这个问题,但我在该领域的知识还不够丰富。我也尝试给程序一个提示,它将被声明,但它不起作用:
void test(const int a, const int b, char* array)
{ .......... }
int main()
{
const int a=2;
const int b=3;
char array[a][b];
......
test(a,b,&array);
}
test.cpp: In function 'int main()':
test.cpp:28:17: error: cannot convert 'char (*)[2][3]' to 'char*' for argument '3' to 'void test(int, int, char*)'
test(a,b,&array);
重点是,以类似的方式,我在函数之外得到了一个一维字符串数组,我尝试了其他方法,但出了问题:
void test(const int a, const int b, char* array)
{.........}
int main()
{
const int a=2;
const int b=3;
char * array = new char [a][b];
..........
test(a,b,*array);
}
test.cpp:20:31: error: cannot convert 'char (*)[3]' to 'char*' in initialization
char * array = new char [a][b];
test.cpp:5:6: note: initializing argument 3 of 'void test(int, int, char*)'
void test(const int a, const int b, char* array)
像这样
void test(const int a, const int b, char (*array)[3])
并且(注意不是
&
)
test(a,b,array);