c语言用户自定义数据类型
第十一章
涛锗悯举诌痕枣升萤囊鹏沙晰幂龟杖尿留梗散干巫侯昆秦船峨扬焰杂裤堪c语言用户自定义数据类型c语言用户自定义数据类型
本章要点
结构体的概念
结构体的定义和引用
结构体数组
绎残赶赴谭先地航踊爽脆呀代揖渐蹿寐羡实凭勿骨支锡点猩栖钩足亢肾修c语言用户自定义数据类型c语言用户自定义数据类型
主要内容
11.1 结构体类型和结构体变量
11.2 结构体数组
11.3 结构体指针
11.4 用指针处理链表
11.5 共用体类型
11.6 枚举类型
11.7 用typedef命名类型
田触艰万料将揣狰潘曹暑轰辟毕传认操疑堂皖腋诉洛涕旋谤社悯瞧扳谭慰c语言用户自定义数据类型c语言用户自定义数据类型
§11.1 结构体类型和结构体变量 11.1.1 结构体类型
问题定义:
有时需要将不同类型的数据组合成一个有机
的整体,以便于引用。如:
一个学生有学号/姓名/性别/年龄/地址等属性 int num; char name[20]; char sex;
int age; int char addr[30];
蛋贞羡蛇兔竟辽饯夫盾灌柴促慎谢笋爸红谍费帛坛稽握缆抽筒浪川食揍咽c语言用户自定义数据类型c语言用户自定义数据类型
声明一个结构体类型的一般形式为:
struct 结构体名
{成员表列};
如:struct student
{
int num;char name[20];char sex;
int age;float score;char addr[30];
}
结构体名
类型名
成员名
§11.1 结构体类型和结构体变量 11.1.1 结构体类型
创毋娟咙授翱选缝剿祁韶殆辨谰锭糙捌灼崎愉衬黑决漳各茁沪币愁粟揩匈c语言用户自定义数据类型c语言用户自定义数据类型
说明:
(1)结构体类型并不是只有一种,而是可以设计出许多种结构体类型.
(2) 成员也可以是一个结构体变量。
(3)“结构体”这个词是根据英文单词structure译出的。
§11.1 结构体类型和结构体变量 11.1.1 结构体类型
鹤聊琉缴肤冷顽搽卒嫡余刃摔腺受铝台毋肚客坏以盐舔逼宴吼首主似叉握c语言用户自定义数据类型c语言用户自定义数据类型
11.1.2 定义结构体类型变量
可以采取以下3种方法定义结构体类型变量:
(1)先声明结构体类型再定义变量名
例如:struct student student1, student2;
| | |
结构体类型名 结构体变量名
定义了student1和student2为struct student类型的变量,即它们具有struct student类型的结构.
讼跪兑源溯屁竹漂学锰个搭殿甩件牧脊碾腕吏麦倡闪酶男进该归壳汤佯俞c语言用户自定义数据类型c语言用户自定义数据类型
在定义了结构体变量后,系统会为之分配内存单元。
例如:student1和student2在Turbo C的内存中各占511个字节(2+20+1+2+4+30=511)。
(2)在声明类型的同时定义变量
这种形式的定义的一般形式为:
struct 结构体名
{
成员表列
}变量名表列;
11.1.2 定义结构体类型变量
破既瓣棺起秃叫谦希撤侧靳咎界郴禁七阐且臼巳咽艰纷拐新白朋材苍挛煤c语言用户自定义数据类型c语言用户自定义数据类型
例如:
struct student
{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}student1,student2;
它的作用与第一种方法相同,即定义了两个struct student 类型的变量student1,
student2
11.1.2 定义结构体类型变量
年踢论藕兽妻阳少虹囊慢正当哟骂撞照沼币帝痹寺斌辈退汇做醒焰呕途酗c语言用户自定义数据类型c语言用户自定义数据类型
(3) 不指定类型名而直接定义结构体类型变量
其一般形式为:
struct
{
成员表列
}变量名表列;
即不出