gpt4 book ai didi

c - 在结构体中填充 int 数组

转载 作者:行者123 更新时间:2023-11-30 18:52:49 24 4
gpt4 key购买 nike

所以,我想知道结构内部数组的初始化。如果我把这个放在主函数上面:

typedef struct{
int day[7];
} WEEK;

void initTest(WEEK week, int seven) {
int i;
for(i=0; i<seven; i++){
week.day[i] = i + 1;
}
}

..似乎不起作用,通过在 main 中调用它,如下所示:

WEEK week;
initTest(week, 7);

我从内存中取出一些垃圾值填充到我的数组中。

但是,如果我直接在主函数中使用以下内容

int i;
for(i=0; i<7; i++){
week.day[i] = i + 1;
}

..我得到了良好的数组(1..到..7)归档

Can someone care to explain why this happens and maybe give some examples or alternatives how to fix this (with pointers/malloc or otherwise), etc?

最佳答案

initTest() 收到了 week 的副本。调用函数的week 未更改。相反,让调用代码和接收代码使用指向 week 的指针。

void initTest(WEEK *week, int seven){
int i;
for(i=0; i<seven; i++){
week->day[i] = i + 1; // ->
}
}

WEEK week;
initTest(&week, 7); // &week

关于c - 在结构体中填充 int 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34302486/

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