如何在无穷数组中进行动态分配

问题描述 投票:0回答:1

好吧,我想更改结构的写入方式,目前我使用数组,并且需要限制其使用,但是我想要一种方法来创建一个动态数组,该数组的大小与读取的大小有关,而不必总是编辑数组值。

当前代码:

struct sr_flag {
    int value_flag;
};

struct er_time {
    int value_time;
};


struct se_option {
    struct sr_flag flag[50];
    struct er_time time[50];
};


struct read_funcs
    struct se_option *option;
    void (*option_func) (void);
    ...
}

struct read_funcs func_;
struct read_funcs *func;

int sr_flags(int i, int fg, int val) {

    if(i < 0)
        return 0;

    return func->option[i].flag[fg].value_flag = val;
}


void option_func(void) {
    struct se_option fnc;

    fnc.option = malloc(500 * sizeof(*(fnc.option)));
}

void read_fnc() {
    func = &func_;

    func->option = NULL;
    func->option_func = option_func;
}

我正在寻找一种删除数组数量的方法[50],而不是每次执行sr_flags函数时,都会提高限制]

示例:sr_flags函数执行的1x数组将是[1],如果执行的2x将是[2]

我也考虑使用option_func函数进行相同操作

我尝试不成功使用以下内容

struct se_option {
    struct sr_flag *flag;
    struct er_time time[50];
};

int sr_flags(int i, int fg, int val) {

    if(i < 0)
        return 0;

    func->option[i].flag = malloc(1 * sizeof(*(func->option[i].flag)));

    return func->option[i].flag[fg].value_flag = val;
}

int main () {

    for(int i < 0; i < 10; i++)
        sr_flags(i, 1, 30);

    return 0;

}
c memory dynamic-memory-allocation allocation
1个回答
0
投票

我不确定您要的内容100%,但我想您只是想调用realloc并通过提供的数量来增加大小。这很容易做到,对于不确定的数组值,我不确定,因此我只使用了占位符值。

© www.soinside.com 2019 - 2024. All rights reserved.