如何分配二维字符串数组......我的意思是如果t[][]
是数组
{char t[0][0]}
应该存储一个字符串,
{ char t[0][1] }
应该存储一个字符串等.......我们可以使用 {char ***t }
来完成这个..如果是这样,我应该如何处理它?或者我们也可以像这样去做
{ char **t[10] }
,其中 10 是我要输入数组的任何字符串的最大长度...
最佳答案
首先你说:我的意思是如果 t[][] 是数组 {char t[0][0]} 应该存储一个字符串,{ char t[0][1] }
,如果 t[0][1] 将存储一个字符串,那么它不是您想要的 2D 数组而是 3D 数组,在 2D 数组中它是 t[0] 存储字符串(因为字符串是一个数组,而 2D 数组是数组的数组),说过我将向您展示如何为 2D 数组动态分配内存,您可以使用该原理创建 3D 数组。
char **matrix = NULL;
int i ;
matrix = malloc(sizeof(char) * ROWS);
for(i = 0 ; i < COLUMNS ; i++)
matrix[i] = malloc(sizeof(char));
好了,在完成该数组后不要忘记使用 free
编辑:
要释放一个动态分配的二维数组,您需要释放
您首先分配的最后一个东西,如下所示:
for(i = 0 ; i < COLUMNS ; i++)
free(matrix[i]);
free(matrix);
关于c - C 中的二维字符串声明数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20788600/