c++结构体共同体和枚举类型
《C语言程序设计》第8章结构体、共用体与枚举类型

name
sex
age
…
stu
p
通过指针访问结构体变量的成员
① 结构变量名.成员名(名字引用); ② 结构指针->成员名(指针引用); ③ (*结构指针).成员名(将指针转化为名字引用);
struct student { int num; char name[20]; char sex; int age; }stu; struct student *p=&stu;
例
3.说明
8.6 typedef的使用
功能:用自定义名字为已有数据类型命名 简单形式: typedef type newname;
类型定义语句关键字
已有数据类型名
用户定义的类型名
例 typedef int INTEGER; typedef float REAL;
INTEGER a,b,c; REAL f1,f2;
num
name
sex
age
…ቤተ መጻሕፍቲ ባይዱ
2字节
20字节
1字节
2字节
int x;
x
a
struct student t;
可多次使用struct student 来定义变量
2.定义结构体类型的同时定义结构体变量
用无名结构体直接定义变量只能一次
struct student t;
struct 结构体名 { 类型标识符 成员名; 类型标识符 成员名; ……………. }变量名表列;
成员(分量)运算符 优先级: 1 结合性:从左向右
stu1.num=10; stu1.score=85.5; stu1.score+=stu2.score; stu1.age++;
C程序设计第11章结构体联合体与枚举类型PPT课件

/* 职工编号*/ /* 姓名 */
/* 基本工资*/ /* 附加工资*/
/* 水电费*/ /* 实发工资*/
};
main()
{
struct person employeea,employeeb;
employeea.num=2086;
="Zhao xiwang";
15
printf("input base,addition,cost:\n"); scanf("%f,%f,%f", &employeea.base, &employeea.addition,
7
11.1.2 结构体变量的定义、引用、初始化 1.结构体变量的定义 (1)先定义结构体类型,再定义结构体类型变 量。 这种定义的一般形式为: struct 结构体类型名 结构体变量名表; 如上面定义了“学生信息”的结构体类型struct student后,就可以用它来定义结构体变量。
8
例如: struct student stul,stu2; 定义了stul和stu2为struct student类型的变量, 编译系统为变量 stul与stu2分配存储空间时,其 存储格式与结构体类型struct student所描述的保 持一致,结构体中的各个成员按要求顺序存放 。每一个struct student类型的变量占用的存储单 元为67个字节。
14
例11.1 定义有关职工工资信息的结构体类型变量(包括
编号、姓名、基本工资、附加工资、水电费、实发工资),
为结构体变量中的成员赋值并输出其值。
struct person
{ int num; char *name; float base; float addition; float cost; float salary;
第十二讲结构体、共用体和枚举类型(C语言)

第十二讲结构体、共用体和枚举类型(C语言)第十二讲结构体、共用体和枚举类型本讲主要介绍C语言中的三种类型的定义和使用,其中两种是构造类型:结构体类型和共用体类型,一种是C语言的基本类型:枚举类型。
要求大家掌握结构体类型、共用体类型和枚举类型的变量的定义,掌握结构体类型和共用体类型变量及其成员的引用等基本操作,理解结构体数组的应用,理解结构体和共用体变量存储形式的不同,了解枚举类型变量的处理方式。
知识要点结构体类型的定义1. 结构体类型定义的一般形式2. 结构体类型定义中的注意事项结构体类型变量1. 结构体类型变量定义的三种方法2. 结构体类型变量的初始化3. 对结构体变量中成员的引用4. 对整个结构体变量的引用结构体数组1. 结构体数组定义的三种方法2. 结构体数组的初始化3. 对结构体数组元素的成员进行引用共用体1. 共用体类型和共用体变量定义的方式2. 共用体变量与结构体变量的区别3. 共用体变量成员的引用4. 共用体变量作为结构体变量的成员枚举类型1. 枚举类型和枚举变量定义的一般形式2. 枚举元素的处理§12.1 结构体类型的定义结构体类型定义的一般形式为:struct 结构体名{类型名1 成员名1;类型名2 成员名2;……类型名n 成员名n;};其中,struct是关键字,是结构体类型的标志。
结构体名是由用户定义的标识符,它规定了所定义的结构体类型的名称。
结构体类型的组成成分称为成员,成员名的命名规则与变量名相同。
§12.2 结构体类型变量一、结构体变量的定义定义结构体类型的变量有三种方法:1.先定义结构体类型,再定义变量。
注意:定义变量时,struct person必须在一起使用,它的用法与int、char等类型名的用法相同。
2.定义类型的同时定义变量。
3.直接定义结构体类型变量,省略类型名。
二、结构体变量的初始化将结构体变量各成员的初值顺序地放在一对大括号中,并用逗号分隔。
C语言程序设计 第10章 结构体、共用体和枚举

result: Li: 5 Zhang: 1 Wang: 4
10.5 结构体指针
【例10-3】 通过指向结构体变量的指针输出该结构体变量的信息。 #include <stdio.h> #include <string.h> struct student { int num; char name[20]; char sex; double score; }; typedef struct student stud; void main() { stud std; // 定义struct student类型的变量 stud *stdptr; // 定义指针变量 stdptr = &std; std.num = 10001; strcpy(, "Li Jun"); std.sex = 'M'; std.score = 89.5; printf("num: %d\nname: %s\nsex: %c\nscore: %f\n", stdptr->num, stdptr->name, stdptr->sex, stdptr->score); }
10.3 结构体类型和结构体变量
10.3.4 结构体变量的初始化
【例10-1】 对结构体变量进行初始化。 #include <stdio.h> struct student { int num; char name[20]; char sex; char address[30]; }; typedef struct student stud; int main() { stud std = {10001, "Li Jun", 'M', "Kunming"}; printf("No.: %d\nname: %s\nsex: %c\naddress: %s\n", std.num, , std.sex, std.address); return 0; }
C语言的结构体和共同体

num
{ int num;
name
char name[20]; sex
char sex;
age
int age;
float score; char addr[30]; score
};
addr
…
2字节 20字节 1字节 2字节
4字节
30字节
…..
s等省结tr都略构uc只。体t s是类tu其型de中定nt的义应成的作员作为,用一且域个s类tru型结的ct整及构组体“体织},类形”n后型式um的定,不,“n义;分am描”配不e述[内2能0结存] 构
C语言教学幻灯片版பைடு நூலகம்八章 结构体、共用体和枚举类型
第八章 结构体、共用体和枚举类型
8.1 结构体 8.2 共用体 8.3 枚举类型 8.4 用typedef定义类型
1
C语言教学幻灯片版第八章 结构体、共用体和枚举类型
8.1 结构体
8.1.1 结构体类型声明
结构体是一种构造数据类型
用途:把不同类型的数据组合成一个整体-------自
类c型ha标r 识na符me[20]成; 员名; 类c型ha标r s识ex符; 成员名;
in…t a…ge…; ……. }变量名表flo列at;score;
char addr[30]; }stu1,stu2;
7
C语言教学幻灯片版第八章 结构体、共用体和枚举类型
8.1 结构体
• 直接定义结构体变量
– 一般形式:
例strsutcrtuct { { int num; 类c型ha标r 识na符me[20]成; 员名; 类c型ha标r s识ex符; 成员名; int…a…ge;………. }变量名表flo列at;score; char addr[30]; }stu1,stu2;
结构体、共用体、枚举

C语言——枚举类型定义符——typedef通过typedef创建一个新的类型,并为这个数据类型赋予一个名字,然后这个数据类型就可以再任何被允许的地方使用。
typedef int INTERGER;注意:通过typedef定义的标志符通常采用大写的形式。
例如:typedef char* STRING;STRING stringPtrAry[20];//char* stringPtrAry[20];枚举类型——enum枚举类型是一种基于标准整形类型的自定义类型。
在一个枚举类型中,每一个整形数值都被赋予一个标识符,而这个标识符就被称为枚举常量。
enum typeName{identifier list};关键字标志符枚举常量集合枚举名每一个枚举常量都被赋予一个整形数值。
如果程序员没有明确的位这些标识符赋值,编译器将自动为第一个标识符赋值为0,第二个为1,依次类推。
如果中间有一个元素被赋值,之后的元素值是前一元素值+1。
注意:枚举常量本质是个常量,不能再去定义一个同名的变量。
枚举类型——赋值C语言允许枚举常量赋予枚举常量(必须要是在这个常量前已经定义的枚举常量)和枚举变量、变量。
例如:enum color{RED, BLUE, GUEEN, WHITE};enum color x;x = BLUE;//1x = GUEEN;//2x = YELLOW;//错误,YELLOW不存在枚举变量可以赋予枚举常量,也可以赋予其他的常量,而且相互之间还可以进行运算,但是,C语言中并没有确保给枚举变量的赋值是合法的。
匿名枚举类型——常量如果在创建枚举类型的时候没有指定名字,那么这就是一个匿名枚举类型。
例如:enum {red, blue, green, white};由于枚举类型里的标示符都是常量,因此可以很方便的利用枚举类型声明常量。
C语言——结构体、共用体结构体——struct结构体是具有单一名字的相关元素的集合,而且这些元素可能是不同类型。
C语言第七章结构体共用体枚举类型数据

第七章结构体、共用体和枚举类型数据1.教学内容:§7.1 结构体类型概述7.1.1 结构体的概念及其定义§7.2 结构体类型变量的定义和引用7.2.1 定义结构体类型变量的方法7.2.2 结构体变量的初始化7.2.3 结构体变量的引用7.2.4 结构体的输入和输出§7.3 结构体数组7.3.1 结构体数组的定义方法7.3.2 结构体数组的初始化7.3.3 结构体数组的引用§7.4 结构体变量作为函数参数以及返回的结构体类型值的函数7.4.1 结构体变量作为函数参数7.4.2 返回的结构体类型值的函数§7.5 结构体变量与指针7.5.1 指向结构体变量的指针7.5.2 指向结构体数组的指针7.5.3 用指向结构体变量的指针作函数参数§7.6 动态存储分配---链表7.6.1 动态存储分配和链表的概念7.6.2 用包含指针项的结构体变量构成结点7.6.3 用于动态存储分配的函数7.6.4 链表应用举例§7.7 共用体类型数据7.7.1 共用体的概念7.7.2 共用体变量的引用7.7.3 共用体变量的应用§7.8枚举类型数据§7.9 用TYPEDEF定义类型2.教学目的及要求:1) 掌握结构体类型的概念和定义方法,结构体变量的定义和引用2) 掌握指向结构体变量的指针变量的概念和应用3) 掌握链表的概念和应用2)掌握共用体类型的概念和应用3)掌握枚举类型的概念和应用3.教学重点:结构体变量的定义和引用,结构体变量与指针,共用体引用第七章结构体、共用体和枚举类型数据§7.1 结构体类型概述7.1.1 结构体的概念及其定义结构体(structure)是一种数据类型,它把互相联系的数据组合成一个整体。
其定义形式:结构体类型不同于基本数据类型,其特点有:⑴由若干数据项组成,每一个数据项都属于一种已有定义的类型。
每个数据项称为一个结构体的成员,也可称为“域”。
VC++程序设计 -第七章结构体、共同体和枚举类型

int id_no; int eng, phy, math; float ave; } stu1, stu2;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
struct student { int num; char name[20]; char sex; } stu[ ]={ {1011,"Li Lin",'M'}, {1012,"Wang Lan",'F'}, {1013,"Liu Fang",'F'}};
结构体类型名 变量1 变量2
# define STUDENT struct student STUDENT { int num; char name[20]; char sex; int age; 凡是STUDENT的地
方都用struct student
机械替换。
float score;
char addr[30];
紧接着定 义变量
struct 结构体名
{
成员列表
}变量名列表;
三、直接定义结构体类型变量
struct { int num; char name[20]; char sex; int age; float score; char addr[30]; } student1, student2; 不出现结构体名。
char sex;
int age;
float score;
char sex;
int age;
char addr[30];
}; struct student stu[30];
float score;
char addr[30]; } stu[30]; 直接定义
二、结构体数组的初始化
struct student
对局部变量类型的结构体变量初始化
void main(void) { struct student { long int num;
char name[20];
char sex;
char addr[30];
对变量初始化,一一赋值
} student1={901031, “Li Lin”, ‘M’, “123 Beijing Road”}; cout<<<<endl;
结构体类型变量的引用 1、不能对结构体变量整体赋值或输出,只能分别对各个成 员引用。 错误 cin>>student1; 必须用成员名引用
cin>>student1.num;
student1.num=100;
可以将一个结构体变量整体赋给另外一个相同类型的结构 体变量。 student2=student1; 2、嵌套的结构体变量必须逐层引用。 student1.birthday.day=25; 3、结构体变量中的成员可以同一般变量一样进行运算。 student1.birthday.day++; student1.score+=60;
};
STUDENT student1,student2;
二、在定义类型的同时定义变量
struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; } student1, student2;
结构体数组 结构体数组中的每个元素都是一个结构体类型的变 量,其中包括该类型的各个成员。数组各元素在内
存中连续存放。
ห้องสมุดไป่ตู้
一、结构体数组的定义
struct student { int num; struct student { int num; char name[20];
char name[20];
struct
{
成员列表
}变量名列表;
说明: 1、结构体类型的变量在内存依照其成员的顺序顺
序排列,所占内存空间的大小是其全体成员所占空
间的总和。
2、在编译时,仅对变量分配空间,不对类型分配 空间。 3、对结构体中各个成员可以单独引用、赋值,其 作用与变量等同。
格式:变量名 . 成员名 student1 . num
输出: LiLin
关于结构类型变量的使用,说明以下几点:
1、同类型的结构体变量之间可以直接赋值。这种 赋值等同于各个成员的依次赋值。 2、结构体变量不能直接进行输入输出,它的每一 个成员能否直接进行输入输出,取决于其成员的类 型,若是基本类型或是字符数组,则可以直接输入 输出。
3、结构体变量可以作为函数的参数,函数也可以 返回结构体的值。当函数的形参与实参为结构体类 型的变量时,这种结合方式属于值调用方式,即属 于值传递。(举例说明)
第7章
复杂数据类型
7.1结构体
将不同种类型的数据有序地组合在一起,构
造出一个新的数据类型,这种形式称为结构
体。 结构体是多种类型组合的数据类型。
struct
结构体名
关键字 结构体名
{ 成员列表 };
struct student { int num; char name[20];
不同数据 类型组成 的成员
以下程序的结果是:
void main(void) { struct date { int year, month, day; } today;
char sex;
char addr[30];
};
分号不能少
定义结构体类型变量的方法 一、先定义结构体类型再定义变量名
struct student { int num; 结构体类型只是一种数据 char name[20]; 类型,不占内存空间,只 char sex; 有定义结构体类型变量时 int age; 才开辟内存空间。 float score; char addr[30]; }; struct student student1, student2;
4、结构体的成员可以是另一个结构体类型。
struct date { int month; int day; int year; }; }; 成员类型 struct student { int num; char name[20]; struct date birthday; 成员名
5、成员名可以与程序中的变量名相同,二者分占不同的内 存单元,互不干扰。例如,在程序中仍可以定义变量 int num;