欢迎来到天天文库
浏览记录
ID:51963645
大小:1.98 MB
页数:30页
时间:2020-03-26
《C语言程序设计_李学刚_电子课件13单元5 构造类型程序设计_结构体.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、5.6结构体主讲人张静常州信息职业技术学院2、熟练掌握结构体变量、结构体数组的定义和使用3、掌握结构体指针变量的定义和使用4、理解和领会结构体变量和结构体指针变量作为函数参数的区别知识目标1、掌握结构体类型的定义2、能利用结构体编写应用程序,解决较复杂的实际问题能力目标1、会使用结构体存储、处理数据3、能够独立思考编写代码,并基本熟练在VC6.0环境下进行程序的调试和测试(一)用typedef定义类型的方法C语言不仅提供了丰富的数据类型,而且还允许用关键字typedef定义一种新的类型名来代替已有的类型名。typedef定义新类型名的一般形式为:type
2、def原类型名新类型名其中原类型名中含有定义部分,新类型名一般用大写表示,以便于区别。例如:typedefintINTEGER;typedeffloatREAL;定义了新的数据类型INTEGER和REAL,它们分别代表已有数据类型int和float。则:INTEGERa,b;等效于:inta,b;REALx,y;等效于:floatx,y;一、用typedef定义类型用typedef定义新类型名的步骤3、最前面加typedef如:typedefintINTEGER;2、将变量名换成新类型名如:i换成INTEGER;1、按定义变量方法先写出定义体如:inti
3、;4、用新类型名定义变量如:INTEGERi,j;一、用typedef定义类型典型用法Typedef2.定义指针类型例如:typedefchar*STR;/*定义STR为字符指针类型*/STRp,s[10];/*p是字符指针变量,s[10]是字符指针数组*/1.定义数组类型例如:typedefintARRAY[20];/*数据类型ARRAY为整型数组类型*/ARRAYa,b,c;/*等效于inta[20],b[20],c[20];*/说明1.用typedef可以声明各种类型名,但不能用来定义变量。2.用typedef只是对已经存在的类型增加一个类型名,而
4、没有创造新的类型。3.typedef与#define有相似之处,如:typedefintINTEGER;和#defineINTEGERint;的作用都是用INTEGER代表int。但事实上,它们二者是不同的。#define是在预编译时处理的,它只能作简单的字符串替换,而typedef是在编译时处理的,它并不是作简单的字符串替换,例如:typedefintNUM[10];并不是用“NUM[10]”去代替“int”,而是采用如同定义变量的方法那样来声明一个类型(就是将原来的变量名换成类型名)。4.当不同源文件中用到同一类型数据(尤其是像数组、指针、结构体、共
5、用体等类型数据)时,常用typedef声明一些数据类型,把它们单独放在一个文件中,然后在需要用到它们的文件中用#include命令把它们包含进来。5.使用typedef有利于程序的通用与移植。有时程序会依赖于硬件特性,用typedef便于移植。例如,有的计算机系统int型数据用两个字节,数值范围为-32768~32767,而另外一些机器则以4个字节存放一个整数,数值范围为±21亿。如果把一个C程序从一个以4个字节存放整数的计算机系统移植到以2个字节存放整数的系统,按一般办法需要将定义变量中的每个int改为long。例如,将“inta,b,c;”改为“lo
6、nga,b,c;”,如果程序中有多处用int定义变量,则要改动多处。现可以用一个INTEGER来声明int:typedefintINTEGER;在程序中所有整型变量都用INTEGER定义。在移植时只需改动typedef定义体即可:typedeflongINTEGER;(一)定义一个结构体类型的一般形式“结构体”是一种构造类型,它由若干“成员”组成。每一个成员可以是一个基本数据类型或者又是一个构造类型。结构体既然是一种“构造”而成的数据类型,那么在使用之前必须先定义它,也就是构造它。定义一个结构体类型的一般形式为:struct[结构体名]{类型标识符1
7、成员名1;类型标识符2成员名2;……类型标识符n成员名n;};二、结构体类型的定义struct是关键字,在定义和使用中都不能省略。1注意末尾的“;”号必不可少。42结构体中的每个成员均须作类型说明,结构体类型名和成员名的命名应符合标识符的命名规则。3成员名可以与程序中的变量名同名,二者不代表同一对象,互不干扰。说明structstudent{charnum[10];/*学号*/charname[20];/*姓名*/charsex;/*性别*/intage;/*年龄*/floatscore;/*分数*/};(二)用typedef定义结构体类型typedef
8、struct[结构体名]{类型标识符1成员名1;类型标识符2成员名2;……类型标
此文档下载收益归作者所有