工会和结构的C++表

工会和结构的C++表,c++,structure,unions,C++,Structure,Unions,我被告知编写一个程序,创建一个并集和结构,然后创建并集和结构的两个元素数组,并填充它们的字段。我已经创建了一个并集和一个结构,但是如何在数组中填充它们的字段呢 #include <iostream> #include <stdlib.h> #include <stdio.h> using namespace std; union complex; union complex{ int i1; long double ld1;

我被告知编写一个程序,创建一个并集和结构,然后创建并集和结构的两个元素数组,并填充它们的字段。我已经创建了一个并集和一个结构,但是如何在数组中填充它们的字段呢

#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是一个复数数组,而不是指向复数的指针数组。因此,un[0]是一个复合体,而不是指向复合体的指针

因此,您需要:

un[0].i1 = i;

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

好的,假设我将其设置为un[0]。i1=6。如何打印?我正在尝试打印FI1$2.0d,un[0];但是它什么也不打印。它正确地打印结构字段的值,但不打印联合。@newbDeveloper:最好编辑问题,并复制粘贴实际代码。这看起来像是格式化字符串错误,您应该使用%d打印int,不涉及$。您不需要使用new来创建数组。