C++ 中的问题:如何将 char 数组放入函数中,而数组的大小在 main 中声明

问题描述 投票:0回答:1

我试图将二维字符数组放入函数中,但问题是: 两个维度的大小都是在主函数中使用“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)
c++ arrays function pointers
1个回答
0
投票

像这样

void test(const int a, const int b, char (*array)[3])

并且(注意不是

&

test(a,b,array);
© www.soinside.com 2019 - 2024. All rights reserved.