文档详情

C语言程序设计课件:结构体、共同体与位运算.ppt

发布:2024-10-26约7.18千字共10页下载文档
文本预览下载声明

其中union为系统的关键字,其作用是通知系统,目前定义了一个为名为“共用体类型名”的共用体。成员变量可以是任何类型的变量。例如:unionstudent{char?number[10];char?name[10];char?sex[8];int?age;};二、共用体变量的定义共用体变量的定义方式与结构体变量相同,也有三种方式,下面介绍常用的两种。1、先定义共用体类型,再定义共用体变量。例如:uniondata{inti;char?ch;floatf;};uniondataa,b,c;2、在定义共用体的同时定义变量。例如:uniondata{intI;char?ch;floatf;}a,b,c;共用体和结构体的比较:1、结构体变量所占内存长度是各成员所占的内存长度之和,每个成员分别占有其自己的内存单元。2、共用体变量所占的内存长度等于最长的成员所占的内存长度。例如:上面定义的共用体变量a,b,c占用4个字节,而不是各占2+1+4=7个字节。三、共用体变量的引用对共用体变量的赋值、使用都只能是对变量的成员进行。共用体变量的成员表示为:共用体变量名.成员名【案例7-3】利用共用体的特点分别取出int变量中高字节和低字节中的两个数。#includestdio.hmain(){unionic{inti;charch[2];}x;x.i=24897;printf(i=%o\n,x.i);/*用8进制形式输出x.i*/printf(ch0=%o,ch1=%o\nch0=%c,ch1=%c\n,x.ch[0],x.ch[1],x.ch[0],x.ch[1]);}/*用8进制形式输出ch[0],ch[1],用字符形式输出ch[0],ch[1];*/【说明】本例程序中的共用体类型变量x中有两个成员,一个是整型变量n,一个是字符串ch,它们在内存中共占用2个字节。ch[0]存放的是整数的低字ch[1]存放的是整数的高字第四节位运算C语言兼具高级语言与低级语言的特性,因此适合编写系统软件,C语言具备低级语言的特性就在于它能直接对硬件进行操作,即位运算。所谓位运算是指按二进制位进行的运算。一、位逻辑运算(一)、按位与按位与的运算符“”是双目运算符,参加运算的两个数据,按各对应的二进位进行“与”运算。运算规则:00=0;01=0;10=0;11=1;例如:有两个整数i=7,j=3,求ij运算过程示意如下:i=0000000000000111j=0000000000000011ij=0000000000000011因此,ij的值得3(注意不是10)。用途:可以判断一个数据的某一位是否是1;可以保留一个数据中的某些位,屏蔽掉其它位。(二)、按位或按位或运算符为“|”,参加运算的两个对象,按相应的二进位中进行“或”运算。运算规则0|0=0;0|1=1;1|0=1;1|1=1。例如:有两个整数i=3,=5,求i|j运算过程示意如下:i=0000000000000011j=0000000000000101ij=0000000000000111因此,ij的值得7用途:可以将一个数据的某些位置为1,其它位不变。第一节结构体类型概述第二节结构体数组概述第三节共用体第四节位运算第五节项目任务:利用结构体类型改写输入输出子模块第一节结构体类型概述在前面几章中,我们已经介绍了基本类型的变量,如整型、实型、字符型变量等,也介绍了一种构造类型的数据----数组,它的特点是数组中各元素的类型和长度都必须一致,以便于系统处理。但是只有这些数据类型是不够的。有时需要将不同类型的数据组合成一个有机的整体,以便于引用。这些组合在一个整体中的数据是相互联系的。例如,一个学生的姓名、性别、籍贯、学号、成绩等项目,这些项目都与一个学生相联系。但它们的数据类型却各不相同,如姓名、性别、籍贯、学号的数据类型可以为字符型数据,成绩为实型数据,如果将它们分别定义为互相独立的简单变量,难以反映它们之间的内在联系。应当把它们组织成一个组合项,在一个组合项中包含若干个类型不同的数据项,在C语言中就引入了一种数据类型----结构体类型。这种类型的变量可以拥有不同数据类型的成员。一、结构体类型的定义定义结构体类型的格式为:struct?结构体类型名{成员类型1成员名1;成员类型2成员名2;…成员类型n成员名n;????};说明:

显示全部
相似文档