C语言中uninon的用法及含义

来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/25 20:23:35
C语言中uninon的用法及含义C语言中uninon的用法及含义C语言中uninon的用法及含义应该是union吧?共用体声明和共用体变量定义共用体(参考“共用体”百科词条)是一种特殊形式的变量,使用

C语言中uninon的用法及含义
C语言中uninon的用法及含义

C语言中uninon的用法及含义
应该是union吧?
共用体声明和共用体变量定义
共用体(参考“共用体”百科词条)是一种特殊形式的变量,使用关键字union来定义   
共用体(有些人也叫"联合")声明和共用体变量定义与结构体十分相似.其形式为:   
union 共用体名{   数据类型 成员名;   数据类型 成员名;   ...   } 变量名;   
共用体表示几个变量共用一个内存位置,在不同的时间保存不同的数据类型和不同长度的变量.在union中,所有的共用体成员共用一个空间,并且同一时间只能储存其中一个成员变量的值.   下例表示声明一个共用体foo:   
union foo{   
int i;   
char c;   
double k;   
};   
再用已声明的共用体可定义共用体变量.   
例如用上面说明的共用体定义一个名为bar的共用体变量, 可写成:   union foo bar;   
在共用体变量bar中, 整型变量i和字符变量c共用同一内存位置.   
当一个共用体被声明时, 编译程序自动地产生一个变量, 其长度为联合中最大的变量长度.以上例而言,最大长度是double数据类型,所以foo的内存空间就是double型的长度.   
由于union的数据成员共用一个内存空间,所以必须存取正确的成员才能正确的读取变量值,可以使用一个额外的变数或列举型态来记录最后一次使用空间的是哪个成员,例如:   
#include   
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;   }   
};  
enum State {character, number, str};   
int main() {   
State state = character;   
StateMachine machine('J');
  ...   
if(state == character)   
cout