




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第九章 结构体与共用体 9.1 结构体 char name20; char sex; int age; float score; char addr30; ; name num sex age score addr 2字节 2字节 20字节 1字节 4字节 30字节 结构体类型定义描述结构 的组织形式,不分配内存 例 struct student int num; char name20; char sex; int age; float score; char addr30; ; struct student stu1,stu2; 9.2 结构体变量的定义 先定义结构体类型,再定义结构体变量 v一般形式: struct 结构体名 类型标识符 成员名; 类型标识符 成员名; . ; struct 结构体名 变量名表列; 例 #define STUDENT struct student STUDENT int num; char name20; char sex; int age; float score; char addr30; ; STUDENT stu1,stu2; 定义结构体类型的同时定义结构体变量 一般形式: struct 结构体名 类型标识符 成员名; 类型标识符 成员名; . 变量名表列; 例 struct student int num; char name20; char sex; int age; float score; char addr30; stu1,stu2; 直接定义结构体变量 一般形式: struct 类型标识符 成员名; 类型标识符 成员名; . 变量名表列; 例 struct int num; char name20; char sex; int age; float score; char addr30; stu1,stu2; 用无名结构体直接定义 变量只能一次 说明 v结构体类型与结构体变量概念不同 l类型:不分配内存; 变量:分配内存 l类型:不能赋值、存取、运算; 变量:可以 v结构体可嵌套 v结构体成员名与程序中变量名可相同,不会混淆 v结构体类型及变量的作用域与生存期 例 struct date int month; int day; int year; ; struct student int num; char name20; struct date birthday; stu; numname birthday monthdayyear 例 struct student int num; char name20; struct date int month; int day; int year; birthday; stu; numname birthday monthdayyear 9.3 结构体变量的引用 引用规则 v 结构体变量不能整体引用,只能引用变量成员 v可以将一个结构体变量赋值给另一个结构体变量 v结构体嵌套时逐级引用 成员(分量)运算符 优先级: 1 结合性:从左向右 引用方式: 结构体变量名.成员名 例 struct student int num; char name20; char sex; int age; float score; char addr30; stu1,stu2; stu1.num=10; stu1.score=85.5; stu1.score+=stu2.score; stu1.age+; 例 struct student int num; char name20; char sex; int age; float score; char addr30; stu1,stu2; printf(“%d,%s,%c,%d,%f,%sn”,stu1); () stu1=101,“Wan Lin”,M,19,87.5,“DaLian”; () 例 struct student int num; char name20; char sex; int age; float score; char addr30; stu1,stu2; stu2=stu1; ( ) 例 struct student int num; char name20; struct date int month; int day; int year; birthday; stu1,stu2; numname birthday monthdayyear stu1.birthday.month=12; 例 struct student int num; char name20; char sex; int age; float score; char addr30; stu1,stu2; if(stu1=stu2) () 9.4 结构体变量的初始化 形式一: struct 结构体名 类型标识符 成员名; 类型标识符 成员名; . ; struct 结构体名 结构体变量=初始数据; 例 struct student int num; char name20; char sex; int age; char addr30; ; struct student stu1=112,“Wang Lin”,M,19, “200 Beijing Road”; 形式二: struct 结构体名 类型标识符 成员名; 类型标识符 成员名; . 结构体变量=初始数据; 例 struct student int num; char name20; char sex; int age; char addr30; stu1=112,“Wang Lin”,M,19, “200 Beijing Road”; 形式三: struct 类型标识符 成员名; 类型标识符 成员名; . 结构体变量=初始数据; 例 struct int num; char name20; char sex; int age; char addr30; stu1=112,“Wang Lin”,M,19, “200 Beijing Road”; 9.5 结构体数组 结构体数组的定义 三种形式: 形式一: struct student int num; char name20; char sex; int age; ; struct student stu2; 形式二: struct student int num; char name20; char sex; int age; stu2; 形式三: struct int num; char name20; char sex; int age; stu2; num name sex age num name sex age stu0 stu1 25B 结构体数组初始化 例 struct int num; char name20; char sex; int age; stu =,; 顺序初始化: struct student int num; char name20; char sex; int age; ; struct student stu =100,“Wang Lin”,M,20, 101,“Li Gang”,M,19, 110,“Liu Yan”,F,19; 例 struct student int num; char name20; char sex; int age; stu =,; 分行初始化: struct student int num; char name20; char sex; int age; ; struct student stu =100,“Wang Lin”,M,20, 101,“Li Gang”,M,19, 110,“Liu Yan”,F,19; 全部初始化时维数可省 结构体数组引用 引用方式: 结构体数组名下标.成员名 struct student int num; char name20; char sex; int age; str3; stu1.age+; strcpy(,”ZhaoDa”); 例 统计候选人选票 struct person char name20; int count; leader3=“Li”,0,“Zhang”,0,”Wang“,0; main() int i,j; char leader_name20; for(i=1;i成员名结构体变量名.成员名 指向运算符 优先级: 1 结合方向:从左向右 例 指向结构体的指针变量 main() struct student long int num; char name20; char sex; float score; stu_1,*p; p= stu_1.num=89101; strcpy(stu_1.name,“Li Lin“); p-sex=M; p-score=89.5; printf(“nNo:%ldnname:%snsex:%cnscore:%fn“, (*p).num,p-name,stu_1.sex,p-score); 例 int n; int *p= *p=10; n=10 struct student stu1; struct student *p= stu1.num=101; (*p).num=101 指向结构体数组的指针 例 指向结构体数组的指针 struct student int num; char name20; char sex; int age; stu3=10101,“Li Lin“,M,18, 10102,“Zhang Fun“,M,19, 10104,“Wang Min“,F,20; main() struct student *p; for(p=stu;pnum,p-name,p-sex,p-age); num name sex age stu0 p stu1 stu2 p+1 9.10 用typedef定义类型 功能:用自定义名字为已有数据类型命名 类型定义简单形式: typedef type name; 例 typedef int INTEGER; 类型定义语句关键字已有数据类型名 用户定义的类型名 例 typedef float REAL; 类型定义后,与已有类型一样使用 例 INTEGER a,b,c; REAL f1,f2; int a,b,c; float f1,f2; 说明: 1.typedef 没有创造新数据类型 2.typedef 是定义类型,不能定义变量 3.typedef 与 define 不同 define typedef 预编译时处理 编译时处理 简单字符置换 为已有类型命名 typedef定义类型步骤 按定义变量方法先写出定义体 如 int i; 将变量名换成新类型名 如 int INTEGER; 最前面加typedef 如 typedef int INTEGER; 用新类型名定义变量 如 INTEGER i,j; 例 定义数组类型 int a100; int ARRAY100; typedef int ARRAY100; ARRAY a,b,c; int a100,b100,c100; 例 定义指针类型 char *str; char *STRING; typedef char *STRING; STRING p,s10; char *p; char *s10; 例 定义函数指针类型 int (*p)(); int (*POWER)(); typedef int (*POWER)(); POWER p1,p2; int (*p1)(),(*p2)(); 例 定义结构体类型 struct date int month; int day; int year; d; 例 定义结构体类型 struct date int month; int day; int year; DATE; 例 定义结构体类型 typedef struct date int month; int d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年放射科影像学报告阅读与解释模拟试题答案及解析
- 2025年手术室护士手术操作规范考核模拟测试卷答案及解析
- 2025年康复治疗中患者家属心理健康辅导考试答案及解析
- 2025年康复评定评定工具在脑卒中康复中的应用模拟考试卷答案及解析
- 2025年整形外科手术并发症管理案例分析答案及解析
- 2025年神经外科手术后并发症处理专项考试答案及解析
- 接口性能优化方案细则指南方案规范
- 教学课程改革方案总结
- 服务器安全策略手册
- 餐饮招商规划制度
- 2025年国家能源集团宁夏煤业有限责任公司招聘笔试考试题库+答案
- 中国邮政储蓄银行2026校园招聘考试参考试题及答案解析
- 网络信息安全培训案例分享课件
- 社区获得肺炎护理
- 高压氧舱培训课件
- 安徽省九师联盟2026届高三9月开学联考英语(含答案)
- 锁骨骨折诊疗指南
- 矩阵论简明教程全课件
- 学校学生欺凌治理委员会成员及工作职责、实施方案范文
- 2025年有限空间作业安全知识考试题库附答案
- 2025年绿化工技师试题及答案
评论
0/150
提交评论