gpt4 book ai didi

c - 结构内部的匿名 union

转载 作者:行者123 更新时间:2023-11-30 16:45:14 26 4
gpt4 key购买 nike

以下代码提供了 O/P :101:name_provided:name_provided

据我所知, union 一次只能容纳一个成员,但看起来两个值都是可见的,这是正确的还是代码有问题。

#include <stdio.h>

struct test1{
char name[15];
};

struct test2{
char name[15];
};

struct data{
int num;
union{
struct test1 test1_struct;
struct test2 test2_struct;
};
};

int main()
{
struct data data_struct={101,"name_provided"};
printf("\n%d:%s:%s",data_struct.num,data_struct.test1_struct.name,data_struct.test2_struct.name);
return 0;
}

最佳答案

union 指定两个成员将位于内存中的同一位置。因此,如果您分配给 test1_struct然后从test2_struct读取,它将解释 test1_struct 的内容就好像它的格式是test2_struct .

在这种情况下,两种结构具有相同的格式,因此您读取和写入的结构没有区别。使用两个成员相等的 union 通常没有意义。 union 的通常目的是拥有不同类型的成员,但不需要为每个成员拥有单独的内存,因为您一次只需要使用一种类型。请参阅How can a mixed data type (int, float, char, etc) be stored in an array?对于典型的用例。

并参见 Unions and type-punning了解访问与您分配的成员不同的成员的后果。

关于c - 结构内部的匿名 union ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44172739/

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