如何在C中初始化二维字符串数组的行

时间:2015-09-29 02:27:27

标签: c arrays memory-management char

我想使用指针将字符串存储在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行数,我会被困在哪里,每行存储一串字符。任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:2)

这样做,因为你要分配一些指针:

malloc(rows * sizeof(char*))

答案 1 :(得分:0)

您需要使用行数。

char ** stringArr = malloc(rows * sizeof(char*));

另外,不要对malloc()调用的返回值进行类型转换。

答案 2 :(得分:0)

使用sizeof *ptr * N

注意即使stringArrchar ** stringArrint ** stringArr,此方法也会使用正确的类型。

stringArr = malloc(sizeof *stringArr * rows);
for(i = 0; i < rows; i++)
    stringArr[i] = malloc(sizeof *(stringArr[i]) * cols);