文档详情

C语言第八章_结构体和共用体.ppt

发布:2018-04-20约1.96万字共78页下载文档
文本预览下载声明
第8章 本章要点 结构体的概念 结构体的定义和引用 结构体数组 共用体的概念 8.1 问题的提出 在程序里表示一个人(姓名、年龄、性别、……),怎么表示? 想表示多个人呢? 如何用计算机程序实现下述表格的管理? 数组的解决方法 int studentId[30] = {1,2,3,4,5,6}; char studentName[10][30] = {{令狐冲},{林平之}, {岳灵珊},{任莹莹}}; char studentSex[2][30] = {{男},{男}, {女},{女}}; int timeOfEnter[30] = {1999,1999,1999,1999}; int scoreComputer[30] = {90,78,89,78}; int scoreEnglish[30] = {83,92,72,95}; int scoreMath[30] = {72,88,98,87}; int scorePhy[30] = {82,78,66,90}; 结构体的解决方法 struct STUDENT { int studentID; /*每个学生的序号*/ char studentName[10];/*每个学生的姓名*/ char studentSex[4]; /*每个学生的性别*/ int timeOfEnter; /*每个学生的入学时间*/ int scoreComputer; /*每个学生的计算机原理成绩*/ int scoreEnglish; /*每个学生的英语成绩*/ int scoreMath; /*每个学生的数学成绩*/ int scorePhy; /*每个学生的物理成绩*/ }; 【注:】struct STUDENT是一个类型 struct STUDENT students[4]; 【注:】students[0].studentName students[0].Sex 它们都是变量,一般称为结构的成员变量 用户自定义的数据类型 结构体: 把关系紧密且逻辑相关的多种不同类型的变量组织到统一的名字之下,也称复合(构造)数据类型 这种类型的变量占用相邻的一段内存单元 共用体: 把情形互斥但又逻辑相关的多种不同类型的变量组织在一起 这种类型的变量占用同一段内存单元,因此每一时刻只有一个数据起作用 结构变量的定义 结构(Structure)的内存占用 一个结构变量的成员变量在内存中是相邻的 整个结构变量的将占用多少内存呢? 是所有成员变量的内存总和吗? 事实上,所有数据类型在内存中都是从偶数地址开始存放的,且结构所占的实际空间一般是按照机器字长对齐的 不同的编译器、不同的平台,对齐方式会有变化,不过一般的编译器都可以设定按照多大对齐 我们可以用sizeof来获得结构的大小 结构(Structure)的内存占用 结构(Structure)的内存占用 结构(Structure)的内存占用 结构(Structure)的内存占用 用typedef为已存在的类型定义新名字 struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; } ; typedef struct student STUD; STUD student1,student2; 用STUD代替 struct student类型; 结构变量赋值 使用结构示例 struct point { int x; int y; }; struct point pt; /*定义结构体变量*/ struct point *ppt; /*定义结构体指针*/ ppt = pt; 结构体数组的指针 struct student *pt; pt = stu; 练09年国二考题 有以下程序 #include stdio.h struct ord { int x,y;} dt[2]={1,2,3,4}; main() { struct ord *p=dt; printf(%d,, ++p-x); printf(%d\n, ++p-y); } 程序的运行结果是 A. 1,2 B. 2,3 C. 3,4 D.4,1 8.4结
显示全部
相似文档