请回答菜鸟一些问题?请详解

来源:百度知道 编辑:UC知道 时间:2024/05/23 20:10:31
union a_bc
{
int i;
char mm;
};

这个这个。。。。。

union是一种特殊的类别,使用关键字union来定义,union维护足够的空间来置放多个资料成员中的“一种”,而不是为每一个资料成员配置空间,在union中所有的资料成员共用一个空间,同时间只能储存其中一个成员的资料,一个定义union的例子如下:
union StateMachine {
char character;
int number;
char *str;
double exp;
};
一个union只配置一个足够大的空间以来容纳最大长度的资料成员,以上例而言,最大长度是double型态,所以StateMachine的记忆体空间就是double型态的长度,union的成员预设为public,也可以宣告为protected或private,当中可以定义建构函式、解构函式与成员函式,例如:
#include <iostream>using namespace std;
union StateMachine
{public:
char character;
int number;
char *str;
StateMachine(char c) { character = c; }
StateMachine(int n) { number = n; }
StateMachine(char* s) { str = s; }
};
int main()
{ StateMachine machine(1);
cout << machine.number << endl;
return 0;
}
执行结果:
1
由于union的资料成员共用一个记忆体空间,所以必须存取正确的资料成员才能正确的取出资料,可以使用一个额外的变数或列举型态来记录最后一次使用空间的是哪个资料成员,例如:
#include <iostream>