联合类型(union):允许不同的数据类型访问相同的的,
因为实际上他们就是在内存中相同的位置,
声明和结构体差不多。和结构体的区别是
结构体中的数据元素之间有相互联系,而
联合中的数据元素是没有必然的联系的,是相互独立的。
用了其中一个元素,另外的也就不能使用了。否则运行时会出错误。
#include<iostream>
using namespace std;
union student{
const char *name;
int age;
}s;
int main(int argc, char const *argv[])
{
s.name = "zhang san";
cout << s.name << "\n" ;
return 0;
}
当我们这么写时,它会顺利的输出zhang san。但是,
#include<iostream>
using namespace std;
union student{
const char *name;
int age;
};
student s;
int main(int argc, char const *argv[])
{
s.name = "zhang san";
s.age = 18;
cout << s.name << "\n" ;
return 0;
}
原因是这些数据类型是在相同的内存位置,你已经用name 的char类型占用了
这片内存空间,再用age去使用,是肯定有问题的。