《2 C语言上机-10 结构体-精品文档整理.pptx》由会员分享,可在线阅读,更多相关《2 C语言上机-10 结构体-精品文档整理.pptx(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、结构体第十章 210.1 typedef 类型说明 typedef声明,为现有的数据类型创建一个易于记忆的新名字,使程序中的类型声明的意义更明确。tyepedef int Zhengshu;Zhengshu x,y,z;tyepedef char STR20;STR s1,s2; 310.2 结构体 结构体是一种构造的数据结构,是一些元素的集合,这些元素称为结构体的成员变量,且这些成员可以是不同的数据类型。 如:一个学生的记录应包括若干数据学号、姓名、年龄、性别、n门课程的成绩;可为学生这个数据对象构造一个结构体,其元素就是上述数据。 410.2.1 结构体类型的说明结构体定义的一般格式str
2、uct 结构体的名字类型说明符 结构体成员名 1 ;类型说明符 结构体成员名 2 ;类型说明符 结构体成员名 n ; ;学生的记录应包括若干数据学号、姓名、年龄、性别、n门课程的成绩struct studentint number;char name20;int age;char sex;float score20; ; 510.2.2 结构体变量的定义和引用1. 结构体变量的定义结构体变量的定义可以有两种形式。1)说明结构的同时定义变量;2)先说明结构,后定义结构体变量struct studentint number;char name20; . std1, std2;struct stud
3、ent std3, std4; 610.2.2 结构体变量的定义和引用2. 结构体变量的初始化和引用结构体变量的初始化可以在定义的时候进行,在结构体变量后面的大括号内依次将对应位置的成员变量赋值。结构体中的成员分量类似一般的变量,如果要对其进行引用,则需要使用成员运算符“ . ”其一般形式为: 结构体成员变量 . 成员变量 #includestruct studentint number;char name20; std1=1,zhangsan, std2=2,lisi;struct student std3=3,wangwu, std4=4,heliu;int main( ) printf(
4、number namen);printf(%4dt%sn, std1.number, std1.name);printf(%4dt%sn, std4.number, std4.name);return 0; 710.2.3 结构体类型数组对于一个结构体类型的变量,里面包含了一组信息,例如,student结构中的学号、姓名。如果要引用多名学生的信息,则可以使用结构体数组。#includestruct student int number;char name20; class14= 1,zhangsan, 2,lisi, 3,wangwu, 4,heliu ;int main( ) int mai
5、n( ) int i;printf(number namen);for (i=0; i成员变量。其中“-”称为指向运算符。 910.2.3 结构体类型指针 (1)(*p). 成员变量。类似于“结构体变量 . 成员变量”的引用形式。 (2) p-成员变量。其中“-”称为指向运算符。/更常用struct student int number;char name20; class14= 1,zhangsan, 2,lisi, 3,wangwu, 4,heliu ;int main( ) int i; struct student *p;printf(number namen);for (p=clas
6、s1; pclass1+4; p+)printf(%4dt%sn, (*p).number, (*p).name);printf(number namen);for (p=class1; pnumber, p-name);return 0;#include stdio.hstruct abc int a,b,c; ;void f1(struct abc y)y.a = 2;void f2(struct abc *y)y-a = 3;struct abc f3(struct abc y)y.a = 4;return y;void main( ) struct abc x=1,2,3;printf
7、( x.a = %dn, x.a ) ;f1(x); printf( x.a = %dn, x.a ) ;/值传递值传递f2(&x); printf( x.a = %dn, x.a ) ;/地址传递地址传递x=f3(x); printf( x.a = %dn, x.a ) ;/return覆盖覆盖 1210.2.4 链表/不考,自学 链表则是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。如图所示,这是一个单向链表,由一系列节点(链表中每一个元素称为节点)组成。每个节点包括两个部分:一个是存储数据的数据域;另一个是存储下一个节点地址的指针域。通常,第一个节点作为头节点(动态链表中头节点数据域不存放数据),便于指针的引用;最后一个节点是尾节点,里面的指针域为空,即NULL。在很多情况下,链表的节点是逐个、动态的生成,且链表的组织结构由结构体类型加以实现。头节点尾节点数据域 指针域 1310.3 共同体/不考,自学10.3.1共同体类型的说明 将不同数据类型的变量存放到同一段内存单元中,各个成员共同占用一段内存空间,某一时刻只能是一个变量有效,这样的结构类型称为共同体,简称共同体。 1410.4 枚举类型/不考,自学 在C语言中还有一种构造类型,即枚举类型,它用于声明一组命名的常数。当一个变量有几种可能的取值时,可以将它定义为枚举类型。