工会和结构的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来创建数组。