gpt4 book ai didi

c - 结构成员的嵌套循环赋值

转载 作者:太空宇宙 更新时间:2023-11-04 05:53:18 25 4
gpt4 key购买 nike

我想要一个 TestStruct 实例数组,其中有一个 int 类型的成员。我希望输出是

1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6

但它是 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

我有点难过,因为我真的不明白这是怎么回事:

#include <stdio.h>
#include <stdlib.h>

typedef struct {
int num;
} TestStruct;

int main(void) {
int i, j;
TestStruct *test = malloc(sizeof(TestStruct) * 18);

for (i = 1; i <= 3; i++) {
for (j = 0; j < 6; j++) {
test[i].num = i;
}
}
for (i = 0; i < 18; i++) {
printf("%d ", test[i].num);
}

return 0;
}

如果我只是在嵌套的 for 循环中调用 printf(),它工作正常:

#include <stdio.h>

int main(void) {
int i, j;

for (i = 1; i <= 6; i++) {
for (j = 0; j < 3; j++) {
printf("%d ", i);
}
}
}

为什么会这样?

最佳答案

你需要这样写:

for (i = 0; i < 6; i++) {
for (j = 0; j < 3; j++) {
test[i*3+j].num = i+1;
}
}

关于c - 结构成员的嵌套循环赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34029437/

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