gpt4 book ai didi

c - 为什么我不能在嵌套结构中初始化数组?

转载 作者:行者123 更新时间:2023-12-01 12:07:07 25 4
gpt4 key购买 nike

我想创建一个新结构,它是两个相同结构的组合。这些子结构中的每一个都包含一个 double 标量和一个三维数组。但是,当我尝试初始化结构时,我在尝试为数组赋值时遇到错误。

我没有编译错误,但是当我尝试查看嵌套结构中数组的值时,我看到了非常错误的疯狂数字。

你知道我在这里做错了什么吗?

typedef struct quackStruct {
double s;
double v[3];
} quackStruct;

typedef struct dualquackStruct {
quackStruct q1;
quackStruct q2;
} dualquackStruct;

int main() {
quackStruct duck1 = { .s = 0.0, .v = { 0.5,4.0,2.1 } };
quackStruct duck2 = { .s = 0.85, .v = { 20.0, 10.0, -5.0 } };

/* I tried this... but it didn't work
dualquackStruct ducks = { duck1, duck2 }; */

/* this didn't work either */
dualquackStruct ducks = { .q1.s = 0.0, .q1.v = { 0.5, 4.0, 2.1 },
.q2.s = 0.85, .q2.v = { 20.0, 10.0, -5.0 } };

printf("%f\n", ducks.q1.s);
printf("%f\n", ducks.q1.v[0]);
printf("%f\n", ducks.q1.v[1]);
printf("%f\n", ducks.q1.v[2]);
printf("%f\n", ducks.q2.s);
printf("%f\n", ducks.q2.v[0]);
printf("%f\n", ducks.q2.v[1]);
printf("%f\n", ducks.q2.v[2]);

return 0;
}

最佳答案

你的第一行编译。但是 - 你不能两次定义同一个变量......

在您的第二行中,您需要在大括号内执行 q1 和 q2 结构的嵌套初始化,而不是使用 .firSTLevelfield.secondlevelfield 向下两级。:

dualquackStruct ducks = { .q1 = { .s = 0.0,  .v = { 0.5,  4.0,  2.1} },
.q2 = { .s = 0.85, .v = {20.0, 10.0, -5.0} } };

See both lines (after the correction) compiling (GodBoot)。

关于c - 为什么我不能在嵌套结构中初始化数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55537628/

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