【发布时间】:2019-09-04 20:03:50
【问题描述】:
我想重新分配二维指针数组。必须是动态的,如下ascii
+=====+==============+==============+==============+==============+======+
| | [0] | [1] | [2] | [3] | [..] |
+=====+==============+==============+==============+==============+======+
| [0] | 'a' | 'b' | 'c' | 'd' | |
+-----+--------------+--------------+--------------+--------------+------+
| [1] | object[0][0] | object[1][0] | object[2][0] | object[3][0] | |
+-----+--------------+--------------+--------------+--------------+------+
| [2] | object[0][1] | object[1][1] | object[2][1] | object[3][1] | |
+-----+--------------+--------------+--------------+--------------+------+
| [3] | object[0][2] | object[1][2] | object[2][2] | | |
+-----+--------------+--------------+--------------+--------------+------+
| [4] | object[0][3] | | object[2][3] | | |
+-----+--------------+--------------+--------------+--------------+------+
| [5] | object[0][4] | | | | |
+-----+--------------+--------------+--------------+--------------+------+
| [6] | object[0][5] | | | | |
+-----+--------------+--------------+--------------+--------------+------+
在此表中,每个列的大小都不同。我怎么能用二维结构做到这一点。我用malloc分配了矩阵。但我想重新分配第二个索引。像这个矩阵[25][n]。对于具有不同大小的每一列,N 必须重新分配。但它必须在运行时
代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct{
char word[20];
}Dictionary;
Dictionary **object;
void initializeDictionary()
{
// Create matrix [29][1]
object=(Dictionary**)malloc(29 * sizeof(Dictionary*));
object[0]=(Dictionary*)malloc(1*sizeof(Dictionary));
}
【问题讨论】:
-
为什么行索引4和列索引1有间隙?这是否意味着那里的指针为空?
-
@JonathanLeffler:OP 正在考虑每列的数据,以便第一个索引选择一列。
-
@Jack:是的,我刚刚意识到 OP 没有使用普通的
array[row][col]表示法,而是使用了array[col][row],这肯定会让我感到困惑——至少,而且相当可能是他们,也可能是其他半专注于 SO 的读者。 -
是的,和你说的一样@JonathanLeffler。
标签: c multidimensional-array struct malloc realloc