gpt4 book ai didi

c - C 上的 union 数组

转载 作者:太空狗 更新时间:2023-10-29 15:48:24 26 4
gpt4 key购买 nike

我已经声明了这个 union 数组:

union Function {
char* name;
double (*fnct)();
int args;
};

union Function functions[] = {
{.name = "acos", .fnct = acos, .args = 1},
{.name = "asin", .fnct = asin, .args = 1},
{.name = "atan", .fnct = atan, .args = 1},
};

但是,当我尝试使用它时,出现了段错误。

for(int i = 0; i < sizeof(functions) / sizeof(union Function); i++) {
printf("%d\n", functions[i].args);
printf("%s\n", functions[i].name); //HERE!
}

最佳答案

union 包含其中一个 它的成员,而不是所有 它的成员。

所以最后一个初始化器是最后一个,这意味着它的值只是1。所以打印名称(字符串)会导致段错误,因为 printf 试图取消引用地址 1

如果您想拥有它的所有成员,请使用 struct 而不是 union

关于c - C 上的 union 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48461266/

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