我想使用指针将字符串存储在2D数组中,但我对如何操作感到困惑。我见过的例子只使用int数组或使用方括号[]来分配固定大小的内存。所以我正在尝试初始化我的2D字符串数组,这就是我所拥有的:
char ** stringArr = (char**)malloc(/*I don't know what goes here*/);
for(i = 0; i < rows; i++)
stringArr[i] = (char*)malloc(cols *sizeof(char));
正如你可以看到我第一次调用malloc的参数一样,如果我想要一个精确的x行数,我会被困在哪里,每行存储一串字符。任何帮助将不胜感激!
答案 0 :(得分:2)
这样做,因为你要分配一些指针:
malloc(rows * sizeof(char*))
答案 1 :(得分:0)
您需要使用行数。
char ** stringArr = malloc(rows * sizeof(char*));
另外,不要对malloc()调用的返回值进行类型转换。
答案 2 :(得分:0)
使用sizeof *ptr * N
。
注意即使stringArr
为char ** stringArr
或int ** stringArr
,此方法也会使用正确的类型。
stringArr = malloc(sizeof *stringArr * rows);
for(i = 0; i < rows; i++)
stringArr[i] = malloc(sizeof *(stringArr[i]) * cols);