声明并分配给 2D 字符指针

Declaring and allocating to a 2D char pointer

本文关键字:字符 指针 2D 分配 声明      更新时间:2023-10-16

如何在事先不知道每个字符串(char 数组)将有多少个字符的情况下声明和分配二维数组?比如这个——

char** input = new char*(m*sizeof(char*)) //where m is input from terminal

给出错误-

error: invalid conversion from ‘long unsigned int’ to ‘char*’ [-fpermissive]

在此基础上,我有一个将 char** 作为参数的函数。我想知道通过这个指针存储了多少个字符数组。

int read2DArray(char* arr[]){
int l=0;
while(arr[l][0]!='') l++;
return l;
}

这是对的吗?

只有当制作 2D 数组的人足够体贴地用长度为 1 的 1D 数组终止它,其中包含单个字符"\0"时,这才是正确的。

如果您愿意,可以使用该约定。另一种方法是将数组的维度作为附加参数传递。

至于声明数组,请使用括号而不是括号,并且不要提及 sizeof(任何东西)——编译器将处理大小。

char** input = new char*[m];

收到错误消息是因为您告诉编译器创建一个为 m*sizeof(char *) 的新char*