第七章 自定义数据类型
7.1 结构体类型
7.1.1 结构体的概述
一个学生的学号、姓名、性别、年龄、成绩、家庭住址
num name sex age score addr 10010 Li Fun M 18 87.5 BeiJing 声明一个新的结构体的类型: struct Student { int num;
char name[20]; char sex; int age;
float score; char addr[30];
7.1.2 结构体类型变量的定义方法及其初始化 1. 定义结构体变量的方法
(1) 先声明结构体的类型再定义变量名 Student student1,student2; (2) 声明类型的同时定义变量 struct Student { int num;
char name[20]; char sex; int age;
float score; char addr[30]; }std1,std2;
(3) 直接定义结构体类型变量 struct
{ int num;
char name[20]; char sex; int age;
float score; char addr[30]; }std1,std2;
(4) 成员也可以是一个结构体变量 struct Date
第 1 页
{ int month; int day; int year; struct Student { int num;
char name[20]; char sex; int age;
Date birthday; float score; char addr[30];
2. 结构体变量的初始化 struct Student { int num;
char name[20]; char sex; int age;
float score; char addr[30];
}stdent={10001,\
Xin\ Student student2={10002,\Li\ 7.1.3 结构体变量的引用
(1) 可以将一个结构体变量的值赋给另一个具有相同
结构的结构体变量。 student1=student2;
(2) 可以引用一个结构体变量中的一个成员的值。
student1.num=10010; \是成员运算符,它的优先级最高。
(3) 对于结构体嵌套,要逐级引用。
student1.birthday.month=11;
(4) 不能将一个结构体变量作为一个整体进行输入和
输出。
(5) 对于结构体变量的成员可以像普通变量一样进行
各种运算。
(6) 可以引用结构体变量成员的地址,也可以引用结
构体变量的地址。 cout<<&student1;
第 2 页
cout<<&student1.age;
例7.1 引用结构体变量中的成员 #include
char name[20]; char sex;
Date birthday; float score; char addr[30];
}student1,student2={10002,\Li\ void main()
student1=student2;
cout< cout< 5/23/1982 89.5 7.1.4 结构体数组 1. 定义结构体数组 struct Student { int num; char name[20]; char sex; int age; float score; 第 3 页 char addr[30]; }stu[3]; Student x[8]; 2. 结构体数组的初始化 Student y[2]={{10101,\Lin\Beijing Road\ ,{10102,\Fun\Shanghai Road\ 3. 结构体数组应用举例 例7.2 对候选人得票统计程序. #include char name[20]; int count; void main() { Person leader[3]={\ int i,j; char leader_name[20]; for(i=0;i<10;i++) cin>>leader_name; for(j=0;j<3;j++) if(strcmp(leader_name,leader[j].name)==0) { leader[j].count++;break;} for(i=0;i<3;i++) cout< 第 4 页 Li:4 Zhang:3 Fun:2 7.1.5 指向结构体变量的指针 1. 通过指向结构体变量的指针引用结构体变量中的成员 例7.3 指向结构体变量的指针的应用 #include struct Student int num; string name; char sex; float score; Student stu; Student *p=&stu; stu.num=10301; stu.name=\ stu.sex='F'; stu.score=89.5; cout< < <<(*p).score< cout< \是指向运算符,即指向结构体变量运算符。 请分析以下几种运算: p->n p->n++ ++p->n #include 第 5 页