繁体   English   中英

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

[英]How to dynamically allocate a struct containing multiple arrays?

我试图做一个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结束,那么您会拥有完整的棋盘吗? 图像结构类似于棋盘,数组类似于构成棋盘的一堆正方形的列表以及这些正方形的内容。 (例如A1空A2骑士a3主教等...)不幸的是,我不知道将通过哪种板,它可能是3x7板或9x2板等。因此,我需要动态分配内存以用于这些可能性。 分配内存后,我需要存储有关所有“正方形”的位置和内容的信息。 然后,我需要让程序通过木板的高度,木板的宽度和内容列表,然后完成最困难的部分。

您的实际意思是:

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;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM