关于C中的 Union

来源:互联网 发布:快手娃娃姐淘宝店名字 编辑:程序博客网 时间:2024/05/23 16:55

在过去的C语言教科书中,结构体称为结构struct,共用体称为联合union。它们都是用户自定义的类型,用户可以根据自己的需要构造出各种不同的结构体或共用体类型。这两种构造类型是C语言所特有的。

结构体类型和共用体类型的数据都包含有多个不同成员,对这两种类型的数据一般是按逐个成员进行访问。对结构体类型的数据,每个成员要求分配不同的存储空间;而共用体类型的数据,则是按最大成员所需的内存空间进行分配,因为每个成员都共用相同一片内存空间。这样,就使得结构体类型的变量可以同时保存各个成员的数据,而共用体在某一时刻只能保留其中一个成员的数据。这是他们之间的根本区别。 

测试如下:
struct cvMat
{
 int type;
 union
 {
  int col;
  double rows;
 }data;
};

void main(void)
{
 cvMat mat;
 mat.data.col = 2;           // :这个时候使用了col
 printf( "%d /n",mat.data.col );
 mat.data.rows = 3.;     // :now,we use rows.
 printf("%f /n", mat.data.rows );
}

原创粉丝点击