C面向对象chap结构体共同体和枚举类型
- 格式:pptx
- 大小:5.64 MB
- 文档页数:29
一、结构体结构体是一种复合数据类型,是不同类型数据的集合,在C语言中并没有给出具体的结构图类型,但是给出了定义结构体的方法。
所以通常把结构体也称为自定义类型。
1.1结构体的定义struct <结构体标签名>{类型结构体成员名;类型结构体成员名;……};例如:struct student {int sno;int age;char name[30];};在程序中用struct student 来表示该结构体的类型。
1.2结构体变量的定义1.2.1常规定义struct student {int sno;char name[30];float score;};struct student std1;//st1是结构体变量1.2.2与类型同时定义struct student {int sno;char name[30];float score;} std2; //st2是结构体变量1.2.3直接定义struct {int sno;char name[30];float score;} std3;//st3是结构体变量1.3结构体变量的初始化1.3.1完全初始化按照成员的先后顺序依次给每一个成员赋值。
struct student st1 = {1001,"张飞",98.9};1.3.2部分初始化按照成员的先后顺序依次给前若干个成员赋值。
struct student st1 = {1001,"张飞"};1.3.3指定成员初始化不按顺序给某些成员赋值struct student st1 = {.name="关羽", .score=100};1.4结构体变量的使用1.4.1 赋值与数组类似,不能整体赋值相同类型的两个结构体变量之间可以相互赋值struct student st;st = {1001,"张飞",98.9}; //错误定义时可以完全初始化,之后就不能整体赋值了。
C语⾔结构体,枚举,联合体详解⽬录1.什么是结构体、枚举、联合体2.定义结构体2.1 包含结构体成员变量、variable2.2 tag、结构体成员变量2.3 ⽤结构体声名变量2.4 ⽤typedef 创建新类型2.5 两个结构体相互包含2.6 结构体变量初始化2.7 结构体指针3.枚举3.1 定义⽅式3.2 为什么⽤枚举3.3 枚举变量的定义3.4 实例3.5 枚举实际⽤途4.联合体4.1 与结构体区别4.2 定义总结1.什么是结构体、枚举、联合体结构体(struct)是由⼀系列具有相同类型或不同类型的数据项构成的数据集合,这些数据项称为结构体的成员。
如下⾯的student结构体包含三个成员,分别是name、num、age。
枚举(enum)是C语⾔的⼀种特殊类型。
当我们在编程中遇到定义⼀些固定长度或范围的数值时,可以考虑使⽤枚举类型。
使⽤枚举可以让我们的程序可读性更强、看起来更加直观。
举个例⼦,如果我们在编程中需要使⽤数字06分别表⽰星期⽇星期六,程序的可读性就不⾼,我们需要翻⼿册或者看程序注释才能知道每个数字具体代表什么意思。
如果我们使⽤枚举呢,基本上不需要看注释或⼿册就可知晓其⼤意。
联合体是⼀种结构。
它的所有成员相对于基地址的偏移量都是0。
此结构空间要⼤到⾜够容纳最宽的成员。
其对其⽅式适合其中所有成员。
123456// 创建结构体struct student{char *name; // 学⽣名字int num; // 学⽣学号intage; // 学⽣年龄};2.定义结构体12struct tag{ 成员变量...}variable;通常,tag 、结构体成员变量、variable 这3个部分⾄少要出现2个2.1 包含结构体成员变量、variable1234struct {char name[100];int age;}s1;//s1相当于对这个结构体声明了⼀个变量,可以在程序中直接调⽤s1相当于声明的全局变量。
C语言:结构体、共用体、枚举、类型重定义、位运算、预处理C语言除了提供象int,long,float,double、和char这样的基本数据类型之外,还支持数组、Struct、Union、和Enum数据类型。
结构体类型(struct)我们一个数组包含多个成员(元素),每个成员具有相同的数据类型。
一个结构体也能包含多个成员,但每个成员的数据类型可以不同。
例如:(a) struct Student { char Name[10], char Sex, int Age ;float Height; }(b) struct Student S1;这里,(a)定义了struct类型Student,而(b)定义了S1是Student类型的变量。
Student类型包含四个成员:Name,Sex,Age,Height,它们的数据类型分别是字符数组、字符型、整型、和浮点型。
以下是另一例子:struct DATE { int YEAR; int MONTH, int DAY ;}struct DATE d1,d2;注意,struct类型是泛指,而Student和DATE是两个特定的结构体类型。
当定义一结构体类型时,你要指定它的结构体类型名,当定义变量时,要同时写上关键字struct和结构体类型名。
定义结构体类型:我们struct 结构体类型名 { 成员1;成员2;…;成员n; }每一个成员可以是基本类型的变量、数组或指针变量,也可以是其他结构体或共用体类型的变量、数组或指针。
成员虽然不能是本结构体类型的变量,但可以是本结构体类型的指针变量。
定义结构体类型的变量:struct 结构体类型名变量名1,变量名2,…定义结构体变量时也可初始化,如:struct Student S1,S2={ “Zhang San”, ‟M‟, 19, 1.76 },S3;引用结构体类型的变量:(1)引用其成员:结构体变量名。
成员如 strcpy(,”Li Si”); S1.Sex=‟F‟; S1.Age=18; S1.Height=1.72;[0]=‟L‟; [1]=‟i‟; [2]=‟u‟; [3]=‟\0‟;S2.Height = S1.Height + 0.01 ;(1)引用整体就用变量的名字。
c语言枚举和结构体的区别C语言中,枚举(enum)和结构体(struct)是两种不同的数据类型,它们之间有以下区别:1. 枚举是一种常量集合,常用于定义一组相关的常量,例如星期几、月份等,它们都是由一些特定的常量值组成。
枚举常量的值默认从0开始依次递增,可以手动指定枚举值或者改变默认枚举值的起始值。
2. 结构体是一种用户自定义的数据类型,可以将不同类型的变量组合成一个整体,形成一个新的数据类型。
结构体可以包含不同类型的成员变量,每个成员变量可以起一个自定义的名称。
结构体变量的大小等于所有成员变量大小的和。
3. 枚举和结构体在定义和声明方式上有所不同。
枚举类型的定义方式如下:```cenum enumName { a, b, c };```结构体类型的定义方式如下:```cstruct structName {type member1;type member2;...};```4. 在使用枚举和结构体时,访问成员变量的方式也有所不同。
枚举是一组常量的集合,可以直接使用枚举常量进行访问,例如: ```cenum weekDay {Mon, Tue, Wed, Thu, Fri, Sat, Sun};enum weekDay today = Wed;printf('%d', today); // 输出2,表示今天是星期三```结构体变量的成员变量需要使用'点'运算符进行访问,例如: ```cstruct student {char name[20];int age;};struct student s;strcpy(, 'John');s.age = 20;printf('%s %d', , s.age); // 输出John 20```5. 枚举常量值可以在程序中出现多次,且不会造成问题。
但结构体成员变量名必须唯一,否则会编译错误。
6. 枚举常量的值可以是任何整数类型,但结构体成员变量必须是具体的数据类型。