声明并分配给2D char指针

时间:2015-04-25 11:16:50

标签: c++ arrays pointers 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 **作为参数的函数。我想知道通过这个指针存储了多少个char数组。

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

这是对的吗?

1 个答案:

答案 0 :(得分:2)

只有当制作2D数组的人足够考虑使用长度为1的1D数组来终止它时才是正确的,包含单个字符'\ 0'。

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

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

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

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