如何在不事先知道每个字符串(字符数组)将要存在多少个字符的情况下声明和分配二维数组? 例如,这个 -
char** input = new char*(m*sizeof(char*)) //where m is input from terminal
给出错误 -
error: invalid conversion from ‘long unsigned int’ to ‘char*’ [-fpermissive]
在此基础上,我有一个以char **作为参数的函数。我想知道通过这个指针存储了多少个char数组。
int read2DArray(char* arr[]){
int l=0;
while(arr[l][0]!='\0') l++;
return l;
}
这是对的吗?
答案 0 :(得分:2)
只有当制作2D数组的人足够考虑使用长度为1的1D数组来终止它时才是正确的,包含单个字符'\ 0'。
如果您愿意,可以使用该惯例。另一种方法是将数组的维度作为附加参数传递。
至于声明数组,使用括号而不是括号,并且不提sizeof(任何东西) - 编译器会处理大小。
char** input = new char*[m];
您收到错误消息是因为您告诉编译器使用值 m * sizeof(char *)创建新的char*
。