C语言 联合体(Unions)

联合体是C语言中可用的特殊数据类型,它允许将不同的数据类型存储在同一内存位置。

定义联合体

联合体,您必须以与定义结构相同的方式使用 union 语句, union语句为您的程序定义了一个新数据类型,该数据类型具有多个成员变量。

union [union tag] {

member definition;

member definition;

...

member definition;

} [one or more union variables];

这是定义具有三个成员i,f和str的名为Data的联合体类型的方式-

union Data {

int i;

float f;

char str[20];

} data;

现在, Data类型的变量可以存储整数,浮点数或字符串。在上面的示例中,数据类型将占用20个字节的内存空间,因为这是字符串可以占用的最大空间。以下示例显示上述union占用的总内存大小-

#include

#include

union Data {

int i;

float f;

char str[20];

};

int main( ) {

union Data data;

printf( "Memory size occupied by data : %d\n", sizeof(data));

return 0;

}

编译并执行上述代码后,将产生以下输出-

Memory size occupied by data : 20

访问联合体

要访问Union的任何成员,我们使用成员访问运算符(.),您可以使用关键字 union 定义union类型的变量。

#include

#include

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

在这里,我们可以看到Union的 i 和 f 成员的值已变化 ,因为分配给变量的最终值已占用内存位置。

现在,让我们再次查看同一示例,其中一次将使用一个变量,这是拥有Union的主要目的-

#include

#include

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

c语言联合体作用,C语言 联合体(Unions)相关推荐

  1. C语言框架作用,c语言结构(c语言基本框架)

    ◆ 基本要求 1.熟悉 Visual C++ 6.0 集成开发环境. 2.掌握结构化程序设计的方法,具有良好的程序设计风格. 3.掌握程序设计中简单的数据结构和算法并能阅读简单的程. 省略了结构体名, ...

  2. c语言编译器作用,c语言的编译器是干什么用的

    本人不才,仅就个人意见谈谈: 1.什么是编译器: 简单的说,编译器是一种将高级语言经过其解释,翻译成可以运行的二进制代码(有可能是汇编代码,但这种方式处理不一样,还有编译成其他形式的如JAVA是编译成 ...

  3. c语言定时器作用,Go语言定时器实现原理及作用

    对于任何一个正在运行的应用,如何获取准确的绝对时间都非常重要,但是在一个分布式系统中我们很难保证各个节点上绝对时间的一致性,哪怕通过 NTP 这种标准的对时协议也只能把时间的误差控制在毫秒级,所以相对 ...

  4. 小括号在c语言的作用,C语言的小括号----其实是逗号运算符

    比如下面的代码: #include void fun() { int a, b, c, d; a = (, b = ); c = (, ); d = (, ); printf("%d %d ...

  5. c语言sleep作用,c语言sleep用法是什么?

    小编以前Sleep(1000)等于一秒,现在sleep(1)等于一秒,,,什么情况恭喜你找到共度一生的灵魂伴侣,婚姻是人生大事,小编也相信你做出的会是最明智的决定,到时有了爱的结晶生了可爱的宝宝,别忘 ...

  6. 学生管理系统c语言的作用,C语言实现学生信息管理系统(文件版)

    本文实例为大家分享了C语言实现学生信息管理系统的具体代码,供大家参考,具体内容如下 下面是我自己用写的学生信息管理系统,为了增加数据的利用率,分为学生端和教师端,同时实现账号密码登录,以文件的形式将其 ...

  7. 递归函数c语言的作用,C语言基础教程之递归

    更多C/C++资料下载,C/C++学习乐园:747821062 C语言递归 递归指的是在函数的定义中使用函数自身的方法. 更多C/C++资料下载,C/C++学习乐园:747821062 从前有座山,山 ...

  8. 小括号在c语言的作用,c语言小括号的用法有哪些用处.docx

    c语言小括号的用法有哪些用处.docx C语言小括号的用法有哪些用处C语言的小括号里面表示一条语句,返回值是多条语句中最靠右的语句的返回值,下面学习啦小编就为大家介绍C语言小括号的用法,欢迎大家阅读. ...

  9. c语言fwrite作用,C语言fread和fwrite的用法详解(以数据块的形式读写文件)

    fgets() 有局限性,每次最多只能从文件中读取一行内容,因为 fgets() 遇到换行符就结束读取.如果希望读取多行内容,需要使用 fread() 函数:相应地写入函数为 fwrite(). 对于 ...

最新文章

  1. 绝非偶然 苹果iPhone领先5年背后的迷思 【推荐】
  2. Android入门——电话拨号器和四种点击事件
  3. 部署用于生产的Exceptionlees(一个强大易用的日志收集服务)
  4. python中sklearn中的Imputer模块改动
  5. c++ 如何将输入的内容输出到文本文件 要建立文本文件嘛_python如何学习
  6. GitLab Web IDE正式发布10.7版本并开源
  7. win10 office 家庭和学生版 excel个人工作簿 PERSONAL.XLSB 的保存位置
  8. GLSL Core Tutorial – Pipeline (OpenGL 3.2 – OpenGL 4.2)
  9. python数字图像处理(4):图像数据类型及颜色空间转换
  10. 最佳实践 | 联通数科基于 DolphinScheduler 的二次开发
  11. 最近发现的一个c# winform的一个很好用很强大的excel控件 reogrid控件
  12. Excel 划分各分数段并统计各分数段的人数
  13. CentOS 6.x 使用包管理器安装配置Apache+PHP+MySql
  14. IDEA中SurroundWith里面没有逻辑语句模板问题的解决方案
  15. intval的绕过和chr的利用
  16. 所见即所得编辑器_文档标记语言与所见即所得编辑器相比的优势
  17. JAVA初级工程师面试36问(一)
  18. DevTools 无法加载来源映射:无法加载 http://localhost:8082/axios.min.map 的解决方法
  19. 一分钱不花,教你白piao一套自己的云笔记系统
  20. 正则表达式?:代表什么意思

热门文章

  1. 哈佛图书馆墙上的训言
  2. Python介绍以及Python 优缺点
  3. 成为顶尖机器学习算法专家需要知道哪些算法?
  4. Android热更新实现方式
  5. DDD理论学习系列(6)-- 实体
  6. 你真的理解“吃亏是福”么?
  7. xp网吧用母盘制作说明
  8. python怎么输出字符串_python出输出字符串方式:
  9. java代码中何处以main开始,Gradle-user guide-第7章 Java 快速开始
  10. 高职扩招有计算机专业吗,高职扩招计算机专业