c - C 中的二维字符串声明数组

标签 c arrays multidimensional-array

如何分配二维字符串数组......我的意思是如果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/

相关文章:

关联数组上的php array_sum

c++ - 交换数组中的元素 block

Javascript 对象作为一种迷你数据库?

c - 初始化一个二维字符串数组并打印

c++ - int_fast32_t 和 int_fast16_t 是 int 的类型定义。应该如何使用它?

angularjs - 在 Angular 1.5 中通过属性将数组传递到组件中

c++ - C++ 中的动态矩阵

c - 编写接受超时的函数的最佳方法(posix C)

c - 在 VS2008 中使用 scanf 读取重定向文件

c - pthread_mutex_timedlock() 过早退出而不等待超时