C语言:结构体

C语言:结构体

ID:40533283

大小:51.00 KB

页数:7页

时间:2019-08-04

C语言:结构体_第1页
C语言:结构体_第2页
C语言:结构体_第3页
C语言:结构体_第4页
C语言:结构体_第5页
资源描述:

《C语言:结构体》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C语言:结构体、共用体、枚举、类型重定义、位运算、预处理C语言除了提供象int,long,float,double、和char这样的基本数据类型之外,还支持数组、Struct、Union、和Enum数据类型。结构体类型(struct)一个数组包含多个成员(元素),每个成员具有相同的数据类型。一个结构体也能包含多个成员,但每个成员的数据类型可以不同。例如:(a)structStudent{charName[10],charSex,intAge;floatHeight;}(b)structStuden

2、tS1;这里,(a)定义了struct类型Student,而(b)定义了S1是Student类型的变量。Student类型包含四个成员:Name,Sex,Age,Height,它们的数据类型分别是字符数组、字符型、整型、和浮点型。以下是另一例子:structDATE{intYEAR;intMONTH,intDAY;}structDATEd1,d2;注意,struct类型是泛指,而Student和DATE是两个特定的结构体类型。当定义一结构体类型时,你要指定它的结构体类型名,当定义变量时,要同时写上

3、关键字struct和结构体类型名。定义结构体类型:struct结构体类型名{成员1;成员2;…;成员n;}每一个成员可以是基本类型的变量、数组或指针变量,也可以是其他结构体或共用体类型的变量、数组或指针。成员虽然不能是本结构体类型的变量,但可以是本结构体类型的指针变量。定义结构体类型的变量:struct结构体类型名变量名1,变量名2,…定义结构体变量时也可初始化,如:structStudentS1,S2={“ZhangSan”,’M’,19,1.76},S3;引用结构体类型的变量:(1)引用其成员

4、:结构体变量名。成员如strcpy(S1.Name,”LiSi”);S1.Sex=’F’;S1.Age=18;S1.Height=1.72;S2.Name[0]=’L’;S2.Name[1]=’i’;S2.Name[2]=’u’;S2.Name[3]=’’;S2.Height=S1.Height+0.01;(1)引用整体就用变量的名字。容许把一个结构体变量赋值给另一同类型结构体变量:结构体变量名1=结构体变量名2;如S3=S1;结构体类型本质上是一种从基本数据类型派生出来的复合数据类型。虽然不

5、是无它不可,但它会使程序的复杂数据结构更加清晰。例如,把与Student有关的数据组织成一个整体,显然合乎人们的一般思考和处理问题的习惯。如果你知道了C语言还容许定义结构体数组,定义指向结构体的指针,结构体能用作函数的参数和返回值,以及结构体还能嵌套,类型能给程序设计带来的便利就可想而知了。定义结构体数组:如structStudentSS[100];它能存放100个学生的有关信息。你可使用循环语句处理每个学生的数据。定义指向结构体的指针变量:如structStudent*p1,*p2;令指针变量指

6、向某Student结构体变量或数组元素,如:p1=&S1;p2=SS;/*或p2=&SS[0]*/此时可通过指针变量来引用它所指向的结构体变量(或数组元素)了:(*p1).Age=18;/*圆括号不能省,因为“.”比“*”的优先级高*/(*(p2+k)).Age=19;/*同SS[k].Age=19;*/*p2=*p1;注意,*p1代表p1所指向的对象(变量或数组元素),不论指针变量p1的基数据类型是什么,这与int型指针变量的用法是一样的。C语言容许用另外一个运算符使用结构体指针变量引用所指向结

7、构体的成员:指针变量名->成员名它同效于:(*指针变量名).成员名如p1->Age=18;(p2+k)->Age=19;结构体(或其指针)作为函数的参数,如:intF1(intx1,structStudentx2){…}intF2(intx1,structStudent*x2){…}函数调用:k=F1(5,S1);k=F2(5,&S1);p1=&S1;k=F2(5,p1);结构体(或其指针)作为函数的类型(返回值类型),如:structStudentG1(intx,inty){…}structSt

8、udent*G2(intx,inty){…}函数调用:S2=G1(5,6);p2=G2(5,6);C语言的类型重定义C语言容许对任何已有的数据类型(基本类型、已定义的结构体、共用体或枚举类型、或各种指针类型)重新命名:Typedef原类型名新类型名例如:typedefintInteger;typedeflongLtime;typedefchar*String;typedefstructStudentSTUDENT;此后,新类型名和原类型名都可以使用,且有相同的含义。例如:Integ

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。