如何动态分配包含多个数组的结构?

时间:2013-09-24 22:08:18

标签: c arrays pointers struct malloc

我正在尝试制作包含多个数组的另一个struct的{​​{1}}。我也需要动态分配这些数组,所以我想我还需要另一个指针。

struct

好的,所以一旦我弄明白了,我仍然需要弄清楚如何使用int arraysize; typedef struct Array{ int *size = arraysize; unsigned int val[*size]; unsigned int x[*size]; unsigned int y[*size]; } Array; typedef struct Image{ int height; int width; int max; Array *data; } Image; 动态分配内存。我也完全迷失了。任何帮助都将非常感激。

编辑:更多澄清: 我正在使用数组存储三条全部连接的信息。想象一下棋盘,你可以说骑士E4,它告诉你在E行的第4列,有一个骑士。如果你在A1开始这个过程并在K10结束,那么你有一个完整的棋盘吗?图像结构类似于棋盘,数组类似于组成棋盘的一组正方形的列表以及这些正方形的内容。 (例如A1 null A2骑士a3主教等...)不幸的是,我不知道将通过哪种板,它可能是3x7板或9x2板等。所以我需要动态分配内存为那些可能性。一旦我分配了内存,我需要存储有关所有“正方形”的位置和内容的信息。然后我需要让一个程序通过板的高度,板的宽度和内容列表,我将完成困难的部分。

1 个答案:

答案 0 :(得分:1)

你的意思是:

typedef struct data {
    unsigned int x;
    unsigned int y;
    unsigned int val;
} Data;

typedef struct image {
    int height;
    int width;
    int max;
    Data* data;
} Image;

和某处:

Image i;
i.height = 10;
i.width  = 20;
i.data   = malloc(sizeof(Data) * i.width * i.height);
...
// one of the ways how to access Data at 2nd row, 3rd column:
*(i.data + i.width * 1 + 2).val = 7;
...
free(i.data);
i.data = NULL;

但你真正需要的是一本好书;)