当前位置:文档之家› 华北电力大学C++第十五讲

华北电力大学C++第十五讲


结构体----结构体变量
定义结构体类型变量的方法 结构体变量的初始化 和其他类型变量一样,结构体变量也可以初始化。 初始化时将结构体变量的成员所对应的初始值按顺序给出 struct date { int year; int month; int day; }; struct student { int num; char name[20]; date birthday; float score; } st1={101,“zh",1991,1,2,97}; student st2={101,"lili",1993,10,2,85};
结构体----结构体变量
定义结构体类型变量的方法 方法二 方法三 定义结构体类型的同时定义变量 格式 直接定义结构体类型变量 struct 结构体名 例如: { 成员表 }变量表; struct { int num; 例如: char name[20]; struct student float score; { int num; }st1,st2; char name[20]; 不出现结构体名 float score; }st1,st2;
„L‟
„\0‟

tt[1] {100002,"WL",78.5,}}; cout<<tt[0].num<<tt[0].name<< tt[0].score;
78.5
成员score
结构体----结构体数组
#include <stdio.h> 例2 编程统计某次选举中各候选人的票数。假设有三位候选人, #include <string.h> 每张选票中有三位候选人的名字,只能选其一,要求逐一输入每 void main() 张选票选中的候选人,统计并输出各候选人的选举最终得票数。 { struct person 定义结构体类型 { char name[20]; int count; } lx[3]={"ZS",0,"LS",0,"WW",0}; char xp[20]; int i,j; for(i=0;i<10;i++) { gets(xp); void main() for(j=0;j<3;j++) {struct person if(strcmp(xp,lx[j].name)==0) { char name[20]; lx[j].count++; } int count; for(i=0;i<3;i++) }; person lx[3]={"ZS",0,"LS",0,"WW",0}; printf("\n%5s:%d", lx[i].name,lx[i].count);} 定义结构体数组
stu_1
成员num
name[0]
……
name[19] 成员score
……
成员name
结构体-指向结构体类型数据的指针
#include <iostream.h> 指向结构体变量的指针 定义指向结构体类型的指针变 void main() 101zj96.7 例如:struct student *p; 量 { struct student 101zj96.7 指针变量指向结构体变量 { int num; 101zj96.7 将结构体变量的地址赋给指针变量 char name[20]; 例如:p=&stu_1; float score;}stu_1,*p; 用指针变量引用结构体变量 student stu_2={101,"zj",96.7}; *p 引用stu_1 p=&stu_1;//p指向stu_1 等 (*p).num 引用stu_1.num *p=stu_2;//stu_2的值赋给stu_1 价 p->num 引用stu_1.num stu_1 //输出stu_2 p 成员num cout<<stu_2.num<< &stu_1 stu_<<stu_2.score; cout<<endl<<(*p).num<< 成员name (*p).name<<(*p).score; cout<<endl<<p->num<< 成员score p->name<<p->score;}
结构体----结构体变量
定义结构体类型变量的方法
结构体变量在内存中的存储方式
//定义结构体类型 struct student { int num; char name[20]; float score; }; //定义结构体变量 student st1; struct student st2;
成员num
tt[0] tt[1] tt[9]
100001 成员num
„Z‟
tt[0]
„X‟ „\0‟

name[0] name[1] name[2] 成员name name[19]
90.5
„W‟
成员score
name[0] name[1] name[2] 成员name name[19]
100002 成员num
st1 name[0] name[19] 成员score
……
……
成员name
结构体----结构体变量
定义结构体类型变量的方法 结构体成员可以是一个结构体变量 例如:定义一个包含年、月、日的结构体类型date,然后再 定义一个包含学号、姓名、生日、成绩的结构体类型student struct date { int year; 定义结构体类型date int month; int day; }; struct student { int num; 定义结构体类型student char name[20]; date birthday; float score; };
结构体----结构体变量
结构体变量的引用 #include <iostream.h> 例1 输入一个学生的姓名和4门课程的成绩,求出其平均分。 void main() 定义结构体类型 { struct student student { char name[20] ; student的成员: int score[4]; name 字符数组 float ave;}st1; score 整型数组 int i;st1.ave=0;cin>>; for(i=0;i<4;i++) ave 平均值 { cin>>st1.score[i]; 定义结构体变量 st1.ave+=st1.score[i];} struct student st1.ave=st1.ave/4; { char name[20] ; cout<<<<" "; int score[4] ; for(i=0;i<4;i++) float ave; cout<<st1.score[i]<<" "; }; cout<<st1.ave; student st1; }
……
结构体----概述
问题的提出 如何存储某个同学的个人信息 <iostream.h> #include #include <string.h> void main() 定 { struct student 方法二 用结构体变量存储 义 { int num; 结 结构体的概念 char name[20]; 构 构造数据类型。 体 float score; 若干个不同类型但相关的变量 类 }; 构成数据集合体 型 集合体使用一个唯一的名称, student st1; 定义结构 其中的每一个变量称为成员。 体变量 st1.num=100001; 结构体的使用方法 ...... 定义结构体类型 cout<<st1.num; 定义这种结构类型的结构体变量 ...... } 引用结构体st1中的成员num 引用结构体变量
……
Hale Waihona Puke ……tt[0]结构体----结构体数组
结构体数组初始化 和普通数组初始化方式一样 结构体数组元素的引用方法 和普通的结构体变量的引用 方法一样 数组tt tt[0] 例如: tt[1] struct table tt[2] { int num; char name[20]; float score; tt[9] }; table tt[10]={{100001,"ZX",90.5}, ......
高级语言程序设计
结构体、共用体、位运算和文件
– 结构体
– 共用体 – 位运算 – 文件
结构体
概述 结构体变量 结构体数组 指向结构体类型数据的指针 用指针处理链表
结构体----概述
问题的提出 如何存储某个同学的个人信息
方法一
定义6个变量(或数组) 名字 类型 存储内容 num 整型变量 学号 name 字符数组 姓名 sex 字符变量 性别 age 整型变量 年龄 score 实型变量 成绩 addr 字符数组 住址 问题 需要存储的6个数据项具有相 关性,都属于一个同学 存储这6个数据项的变量相互 独立,难以反映数据之间的内 在联系 应当把6个数据项组织成一个 组合项 ——结构体
结构体----结构体变量
定义结构体类型变量的方法 方法一 先定义结构体类型,再定义变量 定义结构体类型 格式二 typedef struct 结构体名 格式一 struct 结构体名 { 成员表 }; { 成员表 }; 例如: 或 struct student typedef struct { int num; { 成员表 } 结构体名; char name[20]; float score; 例如: }; typedef struct student 定义结构体变量 { int num; char name[20]; 结构体名 变量表 float score; 例如: }; student st1; struct student st2;
相关主题