美文网首页
C-共用体

C-共用体

作者: 小石头呢 | 来源:发表于2019-08-05 00:26 被阅读0次

共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。

您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值。

一.定义共用体

为了定义共用体,您必须使用 union 语句,方式与定义结构体类似

union [union tag] {

   member definition;
   member definition;
   ...
   member definition;
} [one or more union variables];
  • union tag 是可选的,每个 member definition 是标准的变量定义
  • 在共用体定义的末尾,,您可以指定一个或多个共用体变量,这是可选的
//定义一个名为 Data 的共用体类型
//有三个成员 i、f 和 str
union Data{
   int i;
   float f;
   char  str[20];
} data;

定义一个共用体变量和定义枚举和结构体变量类似,同样有三种方式

二.访问共用体成员

为了访问共用体的成员,我们使用成员访问运算符.

#include <stdio.h>
#include <string.h>
 
union Data {
   int i;
   float f;
   char  str[20];
};
 
int main( ){
   union Data data;        
 
   data.i = 10;
   data.f = 220.5;
   strcpy( data.str, "C Programming");
 
   printf( "data.i : %d\n", data.i);
   printf( "data.f : %f\n", data.f);
   printf( "data.str : %s\n", data.str);
 
   return 0;
}

//运行结果
data.i : 1917853763
data.f : 4122360580327794860452759994368.000000
data.str : C Programming

共用体的 i 和 f 成员的值有损坏,因为最后赋给变量的值占用了内存位置,这也是 str 成员能够完好输出的原因

#include <stdio.h>
#include <string.h>
 
union Data
{
   int i;
   float f;
   char  str[20];
};
 
int main( ){
   union Data data;        
 
   data.i = 10;
   printf( "data.i : %d\n", data.i);
   
   data.f = 220.5;
   printf( "data.f : %f\n", data.f);
   
   strcpy( data.str, "C Programming");
   printf( "data.str : %s\n", data.str);
 
   return 0;
}

//运行结果
data.i : 10
data.f : 220.500000
data.str : C Programming

所有的成员都能完好输出,因为同一时间只用到一个成员。

共用体的大小

共用体变量所占的内存长度等于最长的成员变量的长度

//共用体Data各占20个字节(因为char str[20]变量占20个字节)
//而不是各占4+4+20=28个字节
union Data{
   int i;
   float f;
   char  str[20];
} data;  

相关文章

  • C-共用体

    共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。 您可以定义一个带有多成员的共用体,但是任何...

  • C语言基础 之 共用体类型

    共用体类型 共用体类型的说明和变量定义 共用体类型又称“联合类型”,简称共用体。共用体类型的说明和变量的定义方式与...

  • C语言共用体

    共用体 共用体的格式:union 共用体名称{数据类型 属性名称;数据类型 属性名称;... ...}共用体定义的...

  • C语言学习之十——共用体、枚举类型和typedef

    共用体1.1共用体的概念 :使几个不同的变量共占同一段内存的结构,称为“共用体”类型的结构。1.2 定义共用体类型...

  • 9.结构体与共用体

    1.共用体 共用体的概念 : 使几个不同的变量共占同一段内存的结构称为 “共用体”类型的结构。 定义共用体类型变量...

  • 结构体 联合体 位域

    union 共用体/联合体 结构体和共用体的区别在于:结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体...

  • iOS共用体

    iOS共用体 一、何为共用体 在C语言中有union联合体/共用体。 union中可以定义多个成员,union的大...

  • C语言的一些符号含义、 函数含义

    union:共用体/联合体 union 共用体名{成员列表};类似结构体,是一群变量的集合,和集合不同的是: 共用...

  • C++的共用体使用场景

    C++使用union 描述 union是C语言中一种声明共用体的数据类型,使用union声明的共用体只会占用共用体...

  • C共用体

    定义 共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。您可以定义一个带有多成员的共用体,但是...

网友评论

      本文标题:C-共用体

      本文链接:https://www.haomeiwen.com/subject/ensydctx.html