0

我正在尝试制作一个struct包含另一个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;

好的,所以一旦我最终弄清楚了,我仍然需要弄清楚如何使用malloc. 我也完全迷失在那里。任何帮助都将不胜感激。

编辑:更多说明:我正在使用数组来存储全部连接的三条信息。想象一个棋盘,你可以说骑士 E4,它告诉你在 E 行的第 4 列,有一个骑士。如果你在 A1 开始这个过程并在 K10 结束,你会有一个完整的棋盘,对吗?image 结构类似于棋盘,Array 类似于组成棋盘的一堆方格的列表以及这些方格的内容。(例如 A1 null A2 knight a3 bishop 等......)不幸的是,我不知道会通过什么样的板,它可能是 3x7 板或 9x2 板等。所以我需要动态分配内存那些可能性。一旦分配了内存,我需要存储有关所有“正方形”的位置和内容的信息。

4

1 回答 1

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;

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

于 2013-09-24T22:23:26.540 回答