c - 结构内部 union

标签 c unions

我正在尝试构建网络应用程序,我需要能够一次编写一个选项,一个、两个或三个。下面的 union 将 4 个字符写入网络,即使我只使用了一个结构。

union choice_
{
    struct one_
    {
        unsigned char one[2];
    }src;   
    struct two_
    {
        unsigned char two[2];
    }two;
    struct three
    {
        unsigned char one[2];
        unsigned char two[2];
    }three;
}choice;

我不能只写 choice.one

我在这里有点困惑,如何构建结构选择?

最佳答案

union 与其最大成员一样大,因为它必须能够随时存储最大成员。在这种情况下,您得到了 struct three,它包含两个数组,每个数组包含两个字符,总共有四个字符,因此 choice 的任何实例都将是四个字符长。

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

相关文章:

c - c 中指针的类型转换

c++ - wchar* 和打印它的问题 C

python - 在 SWIG 中为包含 union 的结构创建类型映射 (Python)

c - 如何在 C 中初始化匿名结构的第二个成员?

c - x=0x80000000时~(x-1)和~x+1的区别

c - 频率数字计数

c - 对于结构变量s1,s2,为什么我可以初始化 "s1={25,3.5}",将s2赋值为 "s1=s2",然后就不能使用“s1={59,3.14}?

c++ - 如何初始化指向 nullptr 的指针 union ?

mysql - 在 MySQL 中实现一个 c/c++ 风格的 union 作为一个列

c++ - C++ 和 C 中的 union 初始化