- 1、本文档共150页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
9.7 用typedef声明新类型名 说明: (2) 用typedef只是对已经存在的类型指定一个新的类型名,而没有创造新的类型。 (3)用tyoedef声明数组类型、指针类型,结构体类型、共用体类型、枚举类型等,使得编程更加方便。 (4)typedef与#define表面上有相似之处 9.7 用typedef声明新类型名 说明: (5) 当不同源文件中用到同一类型数据时,常用typedef声明一些数据类型。可以把所有的typedef名称声明单独放在一个头文件中,然后在需要用到它们的文件中用#include指令把它们包含到文件中。这样编程者就不需要在各文件中自己定义typefef名称了。 9.7 用typedef声明新类型名 说明: (6) 使用typedef名称有利于程序的通用与移植。有时程序会依赖于硬件特性,用typedef类型就便于移植。 9.5.3 共用体类型数据的特点 在使用共用体类型数据时要注意以下一些特点: (7) 共用体类型可以出现在结构体类型定义中,也可以定义共用体数组。反之,结构体也可以出现在共用体类型定义中,数组也可以作为共用体的成员。 9.5.3 共用体类型数据的特点 例9.11 有若干个人员的数据,其中有学生和教师。学生的数据中包括:姓名、号码、性别、职业、班级。教师的数据包括:姓名、号码、性别、职业、职务。要求用同一个表格来处理。 解题思路: 学生和教师的数据项目多数是相同的,但有一项不同。现要求把它们放在同一表格中 解题思路: 如果job项为s,则第5项为class。即Li是501班的。如果job项是t,则第5项为position。Wang是prof(教授)。 解题思路: 对第5项可以用共用体来处理(将class和position放在同一段存储单元中) #include stdio.h struct { int num; char name[10]; char sex; char job; union { int clas; char position[10]; }category; }person[2]; 外部的结构体数组 共用体变量 #include stdio.h union Categ { int clas; char position[10]; }; struct { int num; char name[10]; char sex; char job; union Categ category }person[2]; 声明共用体类型 定义共用体类型变量 int main() {int i; for(i=0;i2;i++) {scanf(%d %s %c %c“,person[i].num, person[i].name, person[i].sex,person[i].job); if(person[i].job == s) scanf(%d“,person[i].category.clas); else if(person[i].job == t‘) scanf(“%s”,person[i].category.position); else printf(“Input error!”); } printf(\n); for(i=0;i2;i++) {if (person[i].job == ‘s’) printf(%-6d%-10s%-4c%-4c% -10d\n,person[i].num,person[i]. name,person[i].sex,person[i].job, person[i].category.clas); else printf(%-6d%-10s%-4c%-4c% -10s\n,person[i].num,person[i]. name,person[i].sex, person[i]
文档评论(0)