C语言程序设计课件第八章.ppt
《C语言程序设计课件第八章.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计课件第八章.ppt(27页珍藏版)》请在三一文库上搜索。
1、本章的主要内容包括: C语言的类型定义 结构 联合 位运算和位段,第八章 结构及其它,回首页,写程序时自己定义的数据类型称作“用户定义类型”。 形式: typedef 类型名 标识符; typedef的作用仅仅是用新类型名来代表已存在的类型名,并未产生新的数据类型。原有的类型名依然有效。 新的类型名可以和C语言中原有的各种基本类名一样,方便地用于定义变量、定义函数的返回值、定义其它构造类型的元素或成员。 例8.1:typedef int INTEGER; 给int类型一个新的名字INTEGER,此后,可以用INTEGER来定义整型变量。如:INTEGER i,j,a10; 例8.2:typed
2、ef char * CHARP; 新类型名CHARP是字符指针类型,表示的旧类型是char *。 CHARP p; 等价于: char *p; 例8.3:typedef double VECT4; 定义一种具有4个元素的双精度数组类型VECT;程序中 VECT v1,v2;定义两个4个元素的双精度数组。,8.1 类型定义,定义新类型的步骤: (1) 首先按通常定义变量的方法写出定义的主体;如: double *f; (2) 将变量名换成新类型名; double *PDOUBLE; (3) 在最前面加上关键字typedef; typedef double *PDOUBLE; (4) 可以用新类型
3、定义变量了; PDOUBLE f1,f2; 讨论自定义数据类型的作用,8.1 类型定义,结构可以将若干个不同类型的数据组合成一个复合数据对象。组成结构的数据项称结构的成分或成员。 结构类型成员的数量必须固定,但该结构中各个成员的类型可以不同。 8.2.1 结构类型说明、结构变量定义 8.2.1.1 结构类型说明 struct 结构名 成员说明序列; 结构名是结构类型说明的标志,如果所定义的结构类型,在程序中很少使用,可以省略结构名,在说明类型的同时定义结构变量;如果所定义的结构类型,在程序中要多次使用,应该使用结构名说明结构类型,以后在程序需要该结构类型的地方,用“struct 结构名”的形式
4、代表整个说明。相当于一个类型名。,8.2 结构,例日期可以用包含三个成员的结构来描述: struct date int year, month, day; ; 学生信息的结构类型可说明如下: struct student char name15; char sex; struct date birthday; float score4; ; 其中struct date是一个已说明过的结构类型名。,8.2 结构,8.2.1.2结构变量定义 结构变量定义有4种方法: (1) 直接定义结构类型变量,将一个结构说明当成类型描述,在它后面列出变量标识符。这种表示方法没有结构名,定义形式如下: struc
5、t 成员说明序列 结构变量表; 例:struct char name10; int age; int class; stu1,stu25,*stu3;,8.2 结构,8.2.1.2结构变量定义 结构变量定义有4种方法: (2) 声明类型同时,定义结构变量 struct 结构名 成员说明序列 结构变量表; 例:struct point double x, y, z; p1,p2,*p3; 说明结构类型point, 并定义三个变量。,8.2 结构,8.2.1.2结构变量定义 结构变量定义有4种方法: (3) 使用已声明的结构类型,定义结构变量 struct 结构类型名 结构变量表; 例:使用上面的
6、例子中说明的struct point。 struct point p1,p25,*p3; (4) 定义结构类型,再定义结构变量 typedef struct 成员说明序列 结构类型名; 结构类型名 结构变量表;,8.2 结构,8.2.1.3结构的实现 C语言为结构对象分配足够大的存储空间,顺序地放入各个成员,但具体的存储位置,由一组对齐规则来调整,结构里的成员未必一个紧接着一个存放,它们之间可能有空位。 结构类型和结构变量的空间计算:sizeof 讨论结构存储中使用对齐原则的原因,8.2 结构,8.2.2 结构变量的初始化和使用 8.2.2.1 结构变量的初始化 可以在定义的同时初始化,使用将
7、变量的成员的初始化值组合起来 。 如 struct point double x,y; p1=1.5,4,6,p3=1.5,2.5,3.4,2.4,8.6,9.0; 初始化描述中的初始值将顺序提供给结构变量的各基本成员,初始化表达式只能是可静态求值的表达式。给出的初始化数据与结构成员类型一致,个数不得多于成员数量,如果提供的数据项不够,与数组的规定一样,其余成员自动用0初始化。 如果定义时没有提供初始值,系统对结构变量的处理方式与其它变量一样。外部和全局变量,用0初始化,自动变量不进行初始化,各成员的状态不确定。,8.2 结构,8.2.2 结构变量的初始化和使用 8.2.2.2 结构变量操作
8、1.整体赋值: 同样类型的结构变量,可整体进行相互赋值。 2.结构成员引用 成员运算符:两个运算符“.”和“-”,点号“.” 优先级:与圆括号、下标运算符相同,在C的运算符中优先级最高 结合方式:自左向右 结构中简单变量成员的引用形式有下面三种: (1) 结构变量名.成员名 (名字引用) (2) 结构指针-成员名 (指针引用) (3) (*结构指针).成员名 (将指针转化为名字应用),8.2 结构,8.2.2 结构变量的初始化和使用 8.2.2.2 结构变量操作 3.对结构成员进行操作 结构变量中的每一个成员都属于某个具体的类型,可以象普通变量一样,对它进行同类变量所允许的任何操作。 例: s
9、canf(“%s”,stu1.name); strcpy(stu1.name,”Zhang yang”); scanf(“%c”,8.2 结构,8.2.3 结构与函数 (1) 向函数传递结构变量的成员 C语言函数实参、形参传递数据只有值传递,结构变量的成员可以是简单变量、数组或指针变量等,作为成员变量,可以参与其类型允许的任何操作,这个原则也适用于参数传递结构变量中的每一个成员都属于某个具体的类型,可以象普通变量一样,对它进行同类变量所允许的任何操作。 (2) 向函数传递结构变量 把结构变量作为一个整体传递给函数,要求函数的形参也属于相同的结构类型。这时传递的是实参结构变量的值,系统将为相同结
10、构类型的形参开辟相应的存储单元,并将实参中各成员的值赋给对应的形参成员。 讨论结构变量作为函数参数的利弊。,8.2 结构,8.2.3 结构与函数 (3) 传递结构的地址 结构指针做函数实参,对应形参应该是一个基类型相同的结构指针。 讨论结构地址作为函数参数的好处 8.2.4 结构指针与链表 链表的特点是将数据存储在位置任意的结构存储块中,用结构指针将这些存储块连接在一起,从第一个存储块顺着指针可以访问到所有的数据。链表中的每一个存储块叫一个结点。 实现链表需要使用结构指针和动态存储管理机制 。,8.2 结构,8.2.4 结构指针与链表 链表示意:,8.2 结构,链表实现结点类型构造的讨论:指向
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 课件 第八
链接地址:https://www.31doc.com/p-2143105.html