gpt4 book ai didi

c - 具有多个数组的结构,其大小在执行时定义

转载 作者:行者123 更新时间:2023-11-30 18:39:05 25 4
gpt4 key购买 nike

我想要的是一个像这样的struct:

struct Store{
int client_debts[];
struct items[];
};

当执行开始时,程序读取一个输入文件,该文件定义了该struct中数组的大小,因此我可以执行如下操作:

struct Store s;
int client_debts[defined_size];
s.client_debts = client_debts;

我怎样才能实现这一目标?

PD:我尝试在struct中使用指针,然后将它们分配给数组,但是当创建数组的函数结束时,数组内存被释放,因此指针始终指向未分配的内存,从而产生段错误。

最佳答案

做你想做的事情的通常方法是动态分配它们:

struct Store{
int *client_debts;
struct mystruct *items;
};

struct Store store;
int n;

scanf ("%d", &n);
if (n <= 0)
error_message();

store.client_debts = malloc (sizeof (*store.client_debts) * n);
store.items = malloc (sizeof (*store.items) * n);
if (!store.client_debts || !store.items)
error_message();

尽管它们是指针,但它们的行为与原始声明的数组完全相同。

关于c - 具有多个数组的结构,其大小在执行时定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31080070/

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