21xrx.com
2024-11-05 18:53:54 Tuesday
登录
文章检索 我的文章 写文章
C++中的Union用法
2023-07-10 13:24:44 深夜i     --     --
C++ Union 用法

在C++编程中,Union是一种特殊的数据类型,它允许程序员定义一个包含多个成员变量的结构体,但只能同时访问其中一个成员变量。它的基本用法是将几个不同类型的变量存储在同一内存区域中,这样可以节省内存并提高程序的效率。本文将介绍C++中Union的用法。

定义Union

使用Union的第一步是定义一个Union变量,可以像定义结构体一样定义Union变量。 但是,Union变量与结构体有所不同的是,只有一个成员变量可以被访问。以下是一个简单的Union定义示例:


union SampleUnion {

  int num;

  float fnum;

  char str[20];

};

上述代码定义了一个包含三个成员的Union变量,其中num和fnum都是基本数据类型,而str是一个字符数组。在此定义中,Union的大小等于最大成员的大小,因此,此Union的大小为20字节。

访问Union成员

为了访问Union成员,可以使用点号或箭头运算符来访问Union成员。但要注意的是,只有一个成员可以被访问。以下是一个示例:


union SampleUnion {

  int num;

  float fnum;

  char str[20];

};

int main() {

  SampleUnion u;

  u.num = 20;

  std::cout<<"Num: "<<u.num<<std::endl;

  u.fnum = 12.5;

  std::cout<<"Fnum: "<<u.fnum<<std::endl;

  strcpy(u.str, "Hello World");

  std::cout<<"Str: "<<u.str<<std::endl;

  return 0;

}

在上面的代码中,通过“SampleUnion u”定义了一个Union变量,并对num、fnum和str分别赋值,最后通过cout输出结果。由于Union的特殊性,输出的结果只有最后一个被设置的成员才能够访问。

使用Union数组

Union数组是一组Union类型的变量。可以使用结构或Union的类型定义一个数组,但是在数组中,对于Union类型的变量,只有一种类型的变量可以被访问。

以下是Union数组的示例:


union ExampleUnion {

  int num;

  float fnum;

  char str[20];

};

int main() {

  ExampleUnion u[3];

  u[0].num = 10;

  u[1].fnum = 20.5;

  strcpy(u[2].str,"Hello C++");

  for(int i = 0; i < 3; i++){

    std::cout<<i<<" - Num: "<<u[i].num<<" - Fnum: "<<u[i].fnum<<" - Str: "<<u[i].str<<std::endl;

  }

  return 0;

}

总结

在C++中,使用Union能够大大减少内存开销,提高程序的效率。但要注意的是,只有对于设置的一个成员变量才能够访问,而使用其他成员变量则是不安全的。因此,在使用Union时,需要格外小心,确保程序的正确性。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复