gpt4 book ai didi

c - 在c中初始化结构数组

转载 作者:太空狗 更新时间:2023-10-29 15:23:57 25 4
gpt4 key购买 nike

我已经用三个项目和 it is showing 2 初始化了一个结构数组对我来说!!!

#include <stdio.h>

typedef struct record {
int value;
char *name;
} record;

int main (void) {
record list[] = { (1, "one"), (2, "two"), (3, "three") };
int n = sizeof(list) / sizeof(record);

printf("list's length: %i \n", n);
return 0;
}

这里发生了什么?我疯了吗?

最佳答案

将初始化更改为:

record list[] = { {1, "one"}, {2, "two"}, {3, "three"} };
/* ^ ^ ^ ^ ^ ^ */

您使用 (...) 进行的初始化留下类似于 {"one", "two", "three"} 的效果,并创建一个包含元素 { {(int)"一", "二"}, {(int)"三", (char *)0}

comma operator在 C 中从左到右评估表达式并丢弃除最后一个以外的所有表达式。这就是 123 被丢弃的原因。

关于c - 在c中初始化结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29949323/

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