gpt4 book ai didi

c size_t 变量未设置为零?

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

我试图将total_elements设置为0,但它最终给了我一个随机的大数字。我对为什么会发生这种情况感到非常困惑。这是我的结构:

typedef struct sack {
Element *elements;
size_t total_elements;
} Sack;

typedef struct element {
char *name;
int occurances;
struct element *next;
} Element;

这是代码:

void init_sack(Sack *sack) {
if(!(sack = calloc(1, sizeof(Sack)))) {
return;
}
sack->elements = NULL;
sack->total_elements = 0;
return;
}

最佳答案

init_sack 的类型和名称来看,它看起来应该只是初始化一个现有的 Sack,而不是分配一个新的。

在这种情况下,解决方案是:

void init_sack(Sack *sack) {
sack->elements = NULL;
sack->total_elements = 0;
}

调用为:

Sack sack;
init_sack(&sack);

或者:

Sack *sack = malloc(sizeof *sack);
if (!sack) handle_error_somehow(...);
init_sack(sack);

关于c size_t 变量未设置为零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43906636/

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