C语言联合体Unions实例代码教程 - 联合是一种特殊的数据类型在C语言中,使您可以存储不同的数据类型相同的内存位置。

联合是一种特殊的数据类型在C语言中,使您可以存储不同的数据类型相同的内存位置。您可以定义一个工会的许多成员,但在任何给定时间只有一个成员都可以包含一个值。工会提供了一个有效的方式使用相同的内存位置的多用途。

定义联合体

要定义一个工会,你必须使用UNION语句非常相似的是,像你一样在定义结构。 UNION语句定义了一个新的数据类型,与一个以上的成员为你的程序。 UNION语句的格式如下:

union [union tag]
{
member definition;
member definition;
...
member definition;
} [one or more union variables];

联合标记是可选的,每个成员的定义是一个普通的变量定义,如int;或浮动f;或任何其他有效的变量定义。在联盟的定义,之前的最后一个分号,你可以指定一个或多个工会变量,但它是可选的。这里是您将定义一个名为Data的联合类型,其中有三名成员,F,和str的方式:

union Data
{
int i;
float f;
char str[20];
} data;

现在,一个变量的数据类型可以存储一个整数,浮点数,字符串的字符。这意味着,一个变量,即。存储多种类型的数据,可以使用相同的内存位置。您可以使用任何内置或用户定义的数据类型在一个工会根据您的需求。

占用的内存由工会将大到足以容纳最大的工会会员。例如,在上面的例子中的数据类型将占用20个字节的存储空间,因为这是最大的空间,它可以占用字符串。下面的例子将显示所占用的内存大小由上述工会:

#include <stdio.h>
#include <string.h> 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关键字来定义联合类型的变量。以下是工会使用的例子来解释:

#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

在这里,所有的成员都印出来不太清楚,因为一名成员正在使用一次。

浅谈C语言中的联合体

http://www.cnblogs.com/dolphin0520/archive/2011/10/03/2198493.html

C语言联合体的更多相关文章

  1. C语言联合体(union)的使用方法及其本质-union

    转载自:https://blog.csdn.net/si_zhou_qun_84342712/article/details/53187106 1.联合体union的基本特性——和struct的同与不 ...

  2. C语言基础--结构体对齐,位域,联合体

    结构体对齐 1--结构体对齐的原因与意义 许多计算机系统对基本数据类型的可允许地址做出了一些限制,要求某种类型的对象的地址必须是某个值K(通常是2,4,8)的倍数,而这个k则被称为该数据类型的对齐模数 ...

  3. Android For JNI(五)——C语言多级指针,结构体,联合体,枚举,自定义类型

    Android For JNI(五)--C语言多级指针,结构体,联合体,枚举,自定义类型 我们的C已经渐渐的步入正轨了,基础过去之后,就是我们的NDK和JNI实战了 一.多级指针 指针的概念我们在前面 ...

  4. Android JNI编程(六)——C语言函数指针、Unition联合体、枚举、Typedef别名、结构体、结构体指针

    版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/. 目录(?)[+] 一:函数指针 1.函数指针顾名思义就是定义一个指针变量指向一个函数,和一级指 ...

  5. C语言学习笔记10-结构体、枚举、联合体

    C语言学习笔记10-结构体.枚举.联合体    待传

  6. 如何系统学习C 语言(中)之 联合体、枚举篇

    在C语言中有一个和结构体非常像的数据类型,它的名字叫做联合体,也被称为共用体或公用体. 1,联合体 1,联合体的定义 定义联合体需要使用"union" 关键字,格式如下: unio ...

  7. 嵌入式-C语言基础:联合体和共用体的概念

    有时候同一块内存空间存放类型不同,不同类型的变量共享一块空间. 结构体和共用体的区别: (1)结构体元素有各自单独空间,共用体元素共享空间,空间大小由最大类型确定. (2)结构体元素互不影响共用体赋值 ...

  8. [汇编与C语言关系]4. 结构体和联合体

    用反汇编的方法研究一下C语言的结构体: #include <stdio.h> int main(int argc, char ** argv) { struct { char a; sho ...

  9. (转)C语言union(联合体 共用体)

    一直以来,union都是个很少用到的东西,对于这些不常用的结构往往记不住.这次看书又看到了,还是学习一下吧.一般在Windows API的一些数据结构中才能看到这个union,其实并不复杂.本质上来说 ...

随机推荐

  1. SQLite3 of python

    SQLite3 of python 一.SQLite3 数据库 SQLite3 可使用 sqlite3 模块与 Python 进行集成,一般 python 2.5 以上版本默认自带了sqlite3模块 ...

  2. Database returned an invalid datetime value. Are time zone definitions for your database installed?

    在做文章归档的会后,打印结果时报了这个错误 ret = models.Article.objects.filter(user=user).annotate(month=TruncMonth('crea ...

  3. libevent 信号事件实现方式

    学会使用libevent,才能真正的掌握其是实现原理,我们先从一个简短的测试用例开始: #include <sys/types.h> #include <sys/stat.h> ...

  4. BFS:Nightmare(可返回路径)

    解题心得: 1.point:关于可以返回路径的BFS的标记方法,并非是简单的0-1,而是可以用时间比较之后判断是否push. 2.queue创建的地点(初始化问题),在全局中创建queue在一次调用B ...

  5. 《鸟哥的Linux私房菜》学习笔记(7)——grep及正则表达式

    一.grep命令 grep:根据模式搜索文本,并将符合模式的文本行显示出来 模式:由文本字符和正则表达式的元字符组合成的匹配条件 命令格式:grep [options] [file...] [root ...

  6. 相当牛X的java版星际游戏

    分享一款牛人用java写的经典游戏,目录结构如下: 虽然只能算一个Demo,但是用到了很多Java基础技术和算法: Java2D,双缓冲,A星寻路,粒子系统,动画效果,处理图片,Swing ui ,U ...

  7. python - 接口自动化测试 - GetLog - 日志类封装

    # -*- coding:utf-8 -*- ''' @project: ApiAutoTest @author: Jimmy @file: get_logger.py @ide: PyCharm C ...

  8. Python基础-week03 集合 , 文件操作 和 函数详解

    一.集合及其运算 1.集合的概念 集合是一个无序的,不重复的数据组合,它的主要作用如下 *去重,把一个列表变成集合,就自动去重了 *关系测试,测试两组数据之前的交集.并集.差集.子集.父级.对称差集, ...

  9. Ubuntu安装nginx(复制)

    gcc.g++依赖库 apt-get install build-essential apt-get install libtool 安装 pcre依赖库(http://www.pcre.org/) ...

  10. html5中checkbox的选中状态的设置与获取

    获取checkbox是否选中: $("#checkbox").is(":checked"); 获得的值为true或false. 设置checkbox是否选中: ...