gpt4 book ai didi

c - 如何使用 malloc 分配结构数组

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

我有一个结构:

struct line{
bool isValid;
int tag;
int block;
};
typedef struct line* L;

我想设置一个带有名称集的struct line*数组。

也就是说我要初始化L set[];,然后声明一个集合L* cache[]的数组。

因此,在函数 cache_new(int numSets, int numLines) 中,我想使用 malloc() 初始化它们,我该怎么做?刚接触 C,任何帮助将不胜感激。

最佳答案

如果你的数组是用[]声明的,那么你就不能动态分配它。 [] 表示数组将自动或静态分配。

要动态分配一些归零的结构,您应该这样做:

struct line *set = calloc(num_lines, sizeof *set);

使用动态分配,数组本身没有名称,但是使用指向其第一个元素的指针set,您仍然可以访问所有数组成员。

我不太清楚您所询问的有关缓存的内容,但也许应该是:

struct line **cache = calloc(num_sets, sizeof *cache);
for (size_t i = 0; i < num_sets; ++i)
cache[i] = calloc(num_lines, sizeof *cache[i]);

请不要使用指针类型定义,它们会使代码难以阅读。如果需要,您可以typedef struct line Line;。无论您执行 calloc(N, size) 还是 malloc(N * size),这并不重要。

然后您可以使用 [] 表示法访问这些数组,例如缓存[3][5].tag = 7;

关于c - 如何使用 malloc 分配结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24304899/

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