Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C中初始化二维字符串数组的行_C_Arrays_Memory Management_Char - Fatal编程技术网

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

如何在C中初始化二维字符串数组的行,c,arrays,memory-management,char,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)); 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));
char**stringArr=(char**)malloc(/*我不知道这里是什么*/);
对于(i=0;i

正如您可以看到我第一次调用malloc时的参数一样,如果我想要一个精确的x行数,每行存储一个字符字符串,那么我就无法确定应该在那里放置什么。任何帮助都将不胜感激

执行此操作,因为您正在分配一些指针:

malloc(rows * sizeof(char*))

您需要使用行数

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

另外,不要键入malloc()调用的返回值。

使用
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);
stringArr=malloc(sizeof*stringArr*行);
对于(i=0;i
谢谢您的回复,但为什么我不应该键入malloc()?就连cplusplus.com也在malloc()的参考页面上键入了它。@Ghost\u Stark这里是一个受保护的主题链接!希望它能让事情更清楚:谢谢!我意识到我的错误。我分配的是指针,而不是纯值。