您的位置:首页 > 编程语言 > C语言/C++

C++:联合类型(union)

2015-01-13 16:14 393 查看
联合类型(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去使用,是肯定有问题的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: