我想拥有的是这样的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/

10-11 03:03
查看更多