声明并分配给 2D 字符指针
Declaring and allocating to a 2D char pointer
如何在事先不知道每个字符串(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*
。
相关文章:
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 如何循环访问 cpp 中的函数返回的字符指针数组
- 将(N 个字节)无符号字符指针转换为浮点数和双 C++
- 字符指针的 Qt 数组
- C++将常量字符* 指针数组传递给对象
- 为什么不能将字符指针定义为数组?
- 在函数内初始化无符号字符指针将返回空指针
- 将字符指针存储到容器中
- 为什么 strtok_r() 只接受字符数组而不接受字符指针
- 字符指针数组内存分配
- 字符指针不递增?
- 如何在C++中使用字符指针
- 确保字符指针始终指向相同的字符串文字
- C++中的字符指针
- 使用unique_ptr的常量字符指针
- 字符指针不断意外更改
- 将字符指针中的十六进制转换为十进制
- 如何将字符*(字符指针)转换为 PCSZ?
- 在向量中存储字符指针
- 字符指针具有不同的值