C++ union 表和结构表

标签 c++ structure unions

我被告知编写一个程序,创建一个 union 和结构,然后创建 union 和结构的二元素数组并填充它们的字段。我创建了一个 union 和一个结构,但是如何将它们的字段填充到数组中?

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
using namespace std;

union complex;

union complex{
      int i1;
      long double ld1;
      } u;

struct Person {
    char* name;
    int age;
    bool sex;
    void show(){
    printf("name %s, age %2.0d, sex %1d\n",
        name , age, sex);        
    };
} person;

int main(void)
{ 

    Person *o = new Person[2];
    complex *un = new complex[2];

    un[0]->i1=i;  

    system("pause");
    return 0;
}

我尝试过 un[0]->i1=i;但这不是执行此操作的正确方法。

最佳答案

un 是一个complex 数组,而不是一个指向complex 的指针数组。因此,un[0] 是一个复数,而不是指向复数的指针。

因此,您需要:

un[0].i1 = i;

名为 ucomplex 类型的全局实例看起来有点毫无意义,可能应该被删除。

关于C++ union 表和结构表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2764555/

相关文章:

c++ - 为什么一个常量函数返回的volatile类型可以是常量?

c++ - 如何在导入另一个库的库中修复 "invalid use of non-static member function"

c - C 语言的 GNU 科学库概率分布函数

c++ - 变体类型和可变参数模板的转换和输出运算符

c - 为什么取消引用指向外部 union 的指针是未定义的?

c++ - std::vector operator[] 的不正确行为

c++ - 无法洗牌我的卡片阵列 C++

c - 填充有什么好处?

c - 访问结构体非数组元素

c - 取消引用的 union 成员字节不相同