gpt4 book ai didi

c - 如何创建结构数组,其中结构的最后一个元素是 struct hack

转载 作者:太空宇宙 更新时间:2023-11-04 01:35:40 25 4
gpt4 key购买 nike

假设我有以下类型的结构:

struct employee
{
int emp_id;
int name_len;
char name[0];
};

我知道

struct employee *e = malloc(sizeof(*e) + sizeof(char) * 128); 

相当于

struct employee
{
int emp_id;
int name_len;
char name[128]; /* character array of size 128 */
};

我的问题是,当结构中的最后一个元素是 struct hack 时,我能否创建一个此类结构的数组。

例子:我想创建一个结构数组employee[3];这样

employee[0] 可以等同于

 struct employee
{
int emp_id;
int name_len;
char name[128]; /* character array of size 128 */
};

employee[1] 可以等同于

struct employee
{
int emp_id;
int name_len;
char name[256]; /* character array of size 256 */
};

employee[2] 可以等同于

struct employee
{
int emp_id;
int name_len;
char name[512]; /* character array of size 512*/
};

最佳答案

不,出于各种原因,您不能这样做,但您可以创建一个数组,如:

struct employee *all[...];

如果你不这样做,你将需要:

struct employee {
...
char *name;
}

...您将需要每个 name动态分配和赋值。

如果您考虑一下,数组中的每个元素都必须具有相同的长度。如果没有,它如何被索引?此外,该长度必须在编译时已知。

但如果每个 employee element 是一个指针,那么您可以使用 struct hack 使每个元素具有不同的大小,具体取决于 name[] 需要多少空间。 .

关于c - 如何创建结构数组,其中结构的最后一个元素是 struct hack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14847643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com