易截截图软件、单文件、免安装、纯绿色、仅160KB

C/C++

9.2  共用体
C语言除了提供结构体这种可包含多种类型数据的构造类型外,还提供了一种从形式上看和结构体堪称“孪生兄弟”的构造类型——共用体(union)。
本节从共用体的概念入手,从共用体的概念、与结构体的异同、使用等方面进行详细的介绍。
9.2.1  什么是共用体
现实生活中,某些事物往往可以用多种方式去表述,各种方式的地位是平等的,都是从不同的侧面去反应这个事物。例如,古人用的字、名、号,都是对一个人的称谓,但是会根据不同的场合和情况使用其中的一种。又例如,用数字和用优、良、中、差都可以表示成绩,具体使用上可能根据成绩的种类不同而选用其中的一种方式。
如果这些方式可以用同一种类型来表示,那么数组“勉强”能够用来对其进行存储,但浪费存储空间。而如果其数据类型不同,数组就“无能为力”了。结构体似乎也能对其进行表述,但并不是最佳的方式。针对这种情况下,C语言提供的共用体数据类型。
共用体,亦称联合,是有别于前述任何一种数据类型的特殊数据类型,其用来描述类型不相同的数据。与结构体不同的是:共用体对成员存储时采用覆盖技术,共享(部分)存储空间,成员被分配在同一段内存空间中。成员既可以具有相同的数据类型,也可以具有不同的数据类型。  
共用体定义与结构体相似,其一般形式为:
union 共用体名
{
数据类型 成员名1;
数据类型 成员名2;
……
数据类型 成员名n;
};
例如,下面定义一个表示成绩的共用体:
union mark
{
int score;      //表示分数
char degree[4]; //表示等级
};
其如图9.15所示:
图9.15 共用体mark
9.2.2  共用体与结构体
共用体和结构体,作为两种构造类型,从形式上看极其相似,但确实是两种不同的数据类型,可以说是“貌似神离”。下面从外部形式(外部)和内存使用(内部)两方面对其进行比较。
1. 外部的“情投意合”
共用体的定义、共用体变量的定义、共用体变量的引用等方面和结构体形式相同,可以简单的看作用union关键字替代struct关键字。具体说明如下:
l         类似与结构体变量的三种定义方式,共用体变量也有三种形式的定义方式。即先定义共用体类型,在定义共用体变量;定义共用体类型的同时定义共用体变量;不含共用体类型名定义共用体变量。
例如,


相关文档:

linux c/c++ GDB教程详解

GDB

GNU
开源组织发布的一个强大的
UNIX
下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像
VC

BCB

IDE
的调试,但如果你是在
UNIX
平台下做软件,你会发现
GDB
这个调试工具有比
VC

BCB
的图形化调试器更强大的功能。所谓

寸有所长,尺有所短

就是这个道理 ......

C/C++时间函数

clock()返回clock_t类型;
在time.h头文件中,定义了 typedef long clock_t
clock()是用来计算两个时间点之间的时间间隔。如下程序:
#include <stdio.h>
int main()
{
 int i = 0;
 clock_t start_time, end_time;
 start_time = clock(); //开始计时, start_time = 0
 
 while( ......

C的内存分配释放方式学习

一个由C/C++编译的程序占用的内存分为以下几个部分
1、栈区(stack)— 由编译器自动分配释放

,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap) — 一般由程序员分配释放

若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方 ......

o ra c le 安装

 检查内核参数
正在检查 semmsl=250; 已发现 semmsl=250。 通过
正在检查 semmns=32000; 已发现 semmns=32000。 通过
正在检查 semopm=100; 已发现 semopm=32。 失败 <<<<
正在检查 semmni=128; 已发现 semmni=128。 通过
正在检查 shmmax=536870912; 已发现 shmmax=33554432。 失败 <<<< ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号