结构体、共用体与枚举类型

合集下载

结构体、共用体与枚举

结构体、共用体与枚举

for(p=q; p<q+3; p++)
printf("%s\t", p);
}
"li",18},{1003,
9.1.7 结构体与函数
1.结构体变量和结构体变量成员做函数参数
【例9-2】输入3个学生的信息然后输出。每个学 生的信息包括学号、姓名和4门课程的成绩
#include <stdio.h> main() { struct stu_type {long num;
char name[20]; float score[4]; }st[3]; int i, j;float t; printf("Enter students\' datas:\n"); for(i=0; i<3; i++) {scanf("%ld",&st[i].num); getchar(); gets(st[i].name);
}
【例9-5】输出上例中全部学生的name信 息
/* EX9-5.C */
main()
{
struct stu_type
{long num;
char name[20];
int age;
}st[3]={{1001,
"wang",19},{1002,

第十二讲结构体、共用体和枚举类型(C语言)

第十二讲结构体、共用体和枚举类型(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 结构体类型变量

一、结构体变量的定义

定义结构体类型的变量有三种方法:

结构体、共用体、枚举和ty

结构体、共用体、枚举和ty

结构体指针
可以定义指向结构体的指针,即 指针变量可以指向一个结构体变
量。
定义结构体指针时需要指定指针 类型和结构体类型。
可以使用`->`运算符来访问结构 体指针所指向的成员。
02
共用体
共用体定义
共用体是一种特殊的数据类型, 它允许在相同的内存位置存储 不同的wk.baidu.com据类型。
共用体定义使用`union`关键字, 后面跟上共用体的名称和成员 列表。
常量。
枚举变量的声明方式与普通变量类似, 枚举变量的值只能是枚举类型中定义的 只是需要指定枚举类型为变量的类型。 枚举常量之一,不能是其他的整数值。
枚举数组
枚举数组是由枚举类型的元素组成的数组。 枚举数组的声明方式与普通数组类似,只是需要指定数组元素的类型为枚举类型。
枚举数组中的每个元素都可以被赋值为枚举类型中定义的任何一个枚举常量。
存空间大小以及可以进行的操作等。
ty类型的定义使用关键字`typedef`,语法格式为 `typedef 原有类型 别名;`,其中原有类型可以是基本
数据类型、结构体、共用体、枚举等。
通过定义ty类型,可以简化代码,提高代码的可读性 和可维护性。
ty类型变量
ty类型变量是使用ty类型定义 的变量,其定义方式与基本数 据类型变量的定义方式相同。
枚举
枚举定义

结构体、共用体和枚举型

结构体、共用体和枚举型
枚举型的成员名称在程序中具有可读性 ,提高了代码的可读性。
特点
枚举型的每个成员都有一个与之关联的 整数值。
枚举型的作用
01
提高代码的可读性和可维护性
通过使用有意义的名称来表示常量值,可以使代码更易于理解和维护。
02
增强了类型安全性
枚举型可以防止在程序中使用无效的整数值,从而减少了错误的可能性。
03
性。
结构体可以作为函数参数和返 回值,实现数据的传递和共享。
结构体的声明与定义
1
结构体的声明使用关键字`struct`,后面紧跟结构 体的名称和包含的数据成员列表。
2
结构体的定义需要在声明之后进行,使用结构体 名称来定义变量,并分配内存空间。
3
在定义结构体变量时,可以对其包含的数据成员 进行初始化赋值。
由于共用体的成员共享 内存空间,因此同一时 间只能存储其中一个成 员的值。当给共用体的 一个成员赋值后,其他 成员的值将被覆盖。
03
枚举型概述
定义与特点
定义:枚举型(Enumeration)是一种用 户定义的数据类型,允许我们为一组整数 值分配有意义的名称。
枚举型提供了一种类型安全的方式来表 示一组相关的常量值。
结构体、共用体和枚 举型
目录
• 结构体概述 • 共用体概述 • 枚举型概述 • 结构体、共用体和枚举型的比较

在st语言中枚举体 联合体 结构体区别

在st语言中枚举体 联合体 结构体区别

在C语言中,枚举体、联合体和结构体是用来定义新的数据类型的关

键字。它们都能够帮助程序员更好地组织数据,提高代码的可读性和

可维护性。在本文中,我们将深入探讨这三种数据类型的区别和特点。

一、枚举体(enum)

1. 枚举体是一种由程序员定义的数据类型,用来表示一组有限的取值

范围。

2. 在定义枚举体时,需要使用关键字enum,然后在花括号中列出枚

举的取值。

3. 枚举体的每个取值都有一个对应的整数值,默认从0开始递增。

4. 枚举体可以用来定义一些常用的状态值,比如星期几、月份等。

5. 枚举体的定义形式如下:

```

enum Weekday {

Monday,

Tuesday,

Wednesday,

Thursday,

Friday,

Saturday,

Sunday

};

```

二、联合体(union)

1. 联合体也是一种由程序员定义的数据类型,用来表示相同的内存空间可以存储不同类型的数据。

2. 在定义联合体时,需要使用关键字union,然后在花括号中列出联合体的成员。

3. 联合体的大小等于其最大成员的大小。

4. 联合体的所有成员共享同一块内存,可以存储不同类型的数据。

5. 联合体可以用来节省内存空间,但在使用时需要谨慎,以避免数据混乱。

6. 联合体的定义形式如下:

```

union Data {

int i;

float f;

char str[20];

};

```

三、结构体(struct)

1. 结构体是一种由程序员定义的复合数据类型,用来表示一组不同类

型的数据。

2. 在定义结构体时,需要使用关键字struct,然后在花括号中列出结

第九章结构体、共用体与枚举类型.

第九章结构体、共用体与枚举类型.
10
C语言程序设计
张乐乐
9.5 共用体
由于共享的特性, 结构体类型解决了如何描述一个逻辑上相关,但数 只有最新存储的数 据是有效的。 据类型不同的一组分量的集合。
在需要节省内存储空间时,c语言还提供了一种由若 干个不同类型的数据项组成,但共享同一存储空间的构 造类型。
共用体——一种构造类型数据 共用体由若干不同类型的数据项(变量)占用 同一段内存空间的结构, 构成共用体的各个数据项称为共用体成员。
C语言程序设计
第九章 结构体、共用体 与枚举类型
张乐乐
C语言程序设计
张乐乐
9.1.1 结构体类型的定义
结构体类型定义的一般形式: struct 结构体名 { 数据类型1 成员名1; 数据类型2 成员名2; …… 数据类型n 成员名n; }; /*此行的分号不能少*/

struct为关键字; 结构体名是用户定义的类 型标识。 { } 中是组 成该结构 体的
struct date birthday; 与 DATE birthday; 等价。
19
后分号不能少, 表明语句结束。
成员表列
3
C语言程序设计
张乐乐
9.1.1 结构体类型的定义
2. 结构体类型特点:
(1) 结构体类型由多个成员组成,成员的数据类型可以是
整型、实型、字符型、数组 ,也允许是另一个已经定义的

C语言第9章结构体、共用体、枚举

C语言第9章结构体、共用体、枚举

湖南工业大学计算机与通信学院
பைடு நூலகம்
9.1 问题的提出
又如,在学生信息管理系统中填 加个属性:是否是中共党员,如 果不是属性的值为0(int),如
果是属性的值为入党的时间 (char)。在某一时间,属性只有 一种值,而且数据类型不同,这 种情况用什么数据类型描述呢?
对于这种应用,C语言引入了共用体类型。
共用体是一种同一存储区域由不同类型变量共享的数据 类型,它提供—种方法能在同一存储区中操作不同类型 的数据,也就是说共用体采用的是覆盖存储技术,准许 不同类型数据互相覆盖。
char
02float
sstcu分odr张ee0配Cn三1to不N内李ma能pm四存u李et0建[不e32四r0[立3集][02]数0中=]{王=80组,{83五{."85间张寻6,8.三56的址.5"包刘}关,0效7,4娟含5系{,率6"多李8.不5四种};高……"}数8,{8"据王五类"}型,{"刘娟9"2}};
void main()
stu1.sum,stu1.ave);
{
for (i = 0; i < CLASS; i++)
struct node stu1;
{ printf("%s 成绩: %.2f\n",
float sum=0;

第9章 结构体、共用体和枚举类型

第9章 结构体、共用体和枚举类型

• 举例
例9.1 上一页
9.2 结构体数组
• 结构体数组的定义、初始化
– 结构体数组的定义: • 可以定义结构体类型后再定义数组; • 也可以在定义结构体类型的同时定义数组。 例如:struct student {int number; char name[8]; float score[3]; float ave; }stu[3]={{1001,"zhang",{80,78,67}}, {1002, "wang",{98,78,86}}, {1003, "li",{79,89,68}} }; 首页 上一页
上一页
• 在链表中插入结点
设指针变量s指向待插入结点,假设指定结点为p。 – 插入到指定结点之后: ① s−>next=p−>next; ② p−>next=s;
– 插入到指定结点之前:首先要找到p的前驱结点q。
例9.8
上一页
• 在链表中删除结点
在一个单链表中删除指定结点,首先要找到该结点的前驱结 点,然后修改前驱结点的指针域指向待删结点的后继结点,然 后释放被删结点。
• 一个单链表的逻辑示意图
首页 上一页
• 创建链表
– 相关函数:
• malloc函数 1.原型:void *malloc(unsigned int size); 2.功能:在内存的动态存储区中分配size个字节的连续空间, 它的返回值是所分配的那一段空间的起始地址,若分配失 败,则返回一个空指针(0)。 • calloc函数 1.原型:void *calloc(unsigned int n,unsigned int size); 2.功能:内存的动态存储区中分配n个长度为size个字节的 连续空间,它的返回值是指向所分配空间的起始地址,若 分配失败,则返回一个空指针(0)。 • free函数 1.原型:void free(void *p); 2.功能:释放p所指向的内存区,该函数没有返回值。一般 p是调用malloc函数或calloc函数的返回值。 上一页

typedef struct用法

typedef struct用法

typedef struct 用法

1、为基本数据类型定义行的类型名。

2、为自定义的数据类型,包括结构体,共用体和枚举类型,定义简介的类型名称。

3、为数组定义简介的类型名称。

4、为指针定义简洁的类型名称。typedef 是类型定义的意思。typedef struct是为了使用这个结构体方便。

typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。

typedef与typedef struct具体区别在于:若struct node{}这样来定义结构体的话。在定义node 的结构体变量时,需要这样写;struct node n;若用typedef,可以这样写:typedef struct node{}NODE;在申请变量时就可以这样写:NODE n。

其实就相当于NODE是node的别名。区别就在于使用时,是否可以省去struct这个关键字。有些时候,typedef struct NODE{}NODE;还是可以直接NODE n;定义一个NODE类型的结构体。

c语言结构体.ppt

c语言结构体.ppt

scanf("%d/%d/%d",&today.year,&today.month,
&today.day);
printf("Today:%d/%d/%d\n",p->year,p->month,
p->day);
}
2020/4/12
1 结构体
22
结构体的指针
tab数组
3). 指向结构体数组的指针
【例】利用结构体指针输出一组化学 元素名称及其原子量。
的数据类型决定
{ char num[8], name[20], sex; struct date birthday; float score; }a;
a.birthday.year a.birthday.month a.birthday.day
结 构 体 变 量 a 的 各 成 员 可 分 别 表 示 为 a.num、 a.name、a.sex、a.birthday、a.score
2020/4/12
1 结构体
15
结构体变量的定义与初始化
“.”是分量运
4). 结构体变量成员的引用
算符,运算级
别最高。
结构体变量成员引用的一般形式:
结构体变量名.成员名
struct date { int year, month, day;}; struct student

C语言基础知识总结大全

C语言基础知识总结大全

C语⾔基础知识总结⼤全1.⼊门程序

#include <stdio.h>

int main()

{

printf("Hello World!");

return 0;

}

2.数据类型

数据类型:

1.基本数据类型:

1.1. 整型:int 4个字节

1.2. 字符型:char 1个字节

1.3. 实型(浮点型)

1.3.1.单精度型:float 4个字节

1.3.

2.双精度型:double 8个字节

2.构造类型:

2.1.枚举类型

2.2.数组类型

2.3.结构体类型

2.4.共⽤体类型

3.指针类型:

4.空类型:

3.格式化输出语句

%d:⼗进制整数;

%c:单个字符;

%s:字符串;

%f:6位⼩数;

#include <stdio.h>

int main()

{

int age = 18;

float height = 1.85;

char unit = 'm';

printf("⼩明今年%d岁\n", age);

printf("⼩明⾝⾼%f%c\n", height, unit);

printf("⼩明现在在慕课⽹上学习IT技术\n");

return 0;

}

4.常量

值不发⽣改变的量成为常量;

定义字符常量(注意后⾯没有;)

#include <stdio.h>

#define POCKETMONEY 10 //定义常量及常量值

int main()

{

printf("⼩明今天⼜得到%d元零花钱\n", POCKETMONEY);

return 0;

}

5.1.算数运算符:+,-,*,/,%,++,--;前++/--,先运算,再取值.后++/--,先取值,再运算;

c 类知识点总结

c 类知识点总结

c 类知识点总结

C语言的基本结构包括数据类型、运算符、控制结构、函数和数组。下面我们将详细介绍

这些基本知识点。

1. 数据类型

在C语言中,数据类型用于声明变量,用于存储不同类型的数据。C语言的基本数据类型

包括整数类型(int)、字符类型(char)、浮点类型(float)、双精度浮点类型(double)等。此外,C语言还支持用户自定义的数据类型,比如枚举类型、结构体类型和共用体类型。

2. 运算符

C语言支持多种运算符,包括算术运算符(+、-、*、/、%)、关系运算符(>、<、>=、

<=、==、!=)、逻辑运算符(&&、||、!)、位运算符(&、|、^、~、<<、>>)等。运算

符用于对变量执行各种操作,比如进行算术运算、逻辑判断和位操作等。

3. 控制结构

C语言的控制结构包括顺序结构、选择结构和循环结构。顺序结构是程序按顺序执行,选

择结构根据条件控制程序执行的分支,循环结构控制程序重复执行一段代码。C语言提供

了多种控制语句,比如if语句、switch语句、while语句、for语句等,用于实现不同的

控制结构。

4. 函数

函数是C语言的重要组成部分,用于实现程序的模块化和复用。函数包括函数声明和函数

定义两部分,函数声明用于告诉编译器有一个函数存在,函数定义用于定义函数的具体实现。C语言支持库函数和用户自定义函数,库函数是C语言预定义的函数,比如printf()、scanf()等,用户自定义函数是由用户编写的函数。函数可以接受参数、返回值,实现代码

第11章结构体、共用体和枚举数据类型(教案).docx

第11章结构体、共用体和枚举数据类型(教案).docx

第十一章结构体、共用体和枚举数据类型

【目的要求】

一、了解:结构变量和结构指针作函数实参的区别;枚举型变量概念、特点与应用;typedef的用途

二、理解:结构体、共用体的概念和特点;类型说明和变量定义的区别;单向链表的概念和作用

三、学握:结构体、共用体的类型说切、变量定义及使用;结构体数组的定义和初始化(重点);链表的建立、删除和插入(难点)

第一节结构体

一、结构体的定义格式

询而学过的变量都只能定义单一的数据类型,如字符型、整型、实型等等,但是对于复朵的数据,即包含有一个或者多个数据项,各数据项可以具有相同或者不同的类型,并且何个数据项的含义不同,以前的知识就不足了。

例如对于学生实体的描述,学牛有姓名,学号,成绩,性别等等。我们要描述一个学生需要多个基本变量的组合(集成)。这种数据类型在Pascal语言中称为记录,在C语言中称为结构体。它们是数据库的雏形。

num Name S(2X age score address

10010 Li Fun M18 87. 5 Beijing

10011 Zhang San M21 67 Fuzhou

10012 Li si F22 88 Jinan

10013 Wang Hai M20 72 Haikou

在上述的信息中,每一行代表一个人的信息,有学号、姓名、性别、年龄、成绩、地址等信息,以前学过的任何-•种数据类型均不能表示,而分别表示乂违背了信息的集成原则, 用起来也不方便。数组的特征是每个元素都是同质(identical)的,不能表示不同的数据类型。因此,为了把这么多种基本数据类型集合在一起,发明了结构体。在Pascal语言中叫记录。

第八章结构体与共用体

第八章结构体与共用体

一、结构体类型的定义
struct 结构体类型名 {类型 成员名; 类型 成员名; ; };
struct student {int num; char name[20]; int age; float score; char addr[30]; };
struct date {int month;
int day; int year; };
2.在定义结构体类型的同时定义变量
struct student {int num; char name[20]; int age; float score; char addr[30]; }student1,student2;
3.直接定义结构体变量
struct {int num; char name[20]; int age; float score; char addr[30]; }student1,student2;
int sum; int sum[10]; int fun(int sum); int *sum; int fun(int *sum); int *fun(int *sum);
struct student sum; struct student sum[10]; struct student fun(struct student sum); struct student *sum; struct student fun(struct student *sum); struct student *fun(struct student *sum);

8章 c语言程序设计 结构体,共用体与枚举类型

8章 c语言程序设计 结构体,共用体与枚举类型

例:struct std_info {char name[9]; char sex[3]; float score; struct date birthday; }stud,arr[5],*p; p=& stud; (1)若要引用结构体类型变量stud 中score成员项,可写成: stud. score p-> score *(p). score arr[1] .score /*通过结构体变量引用*/ /*通过指针变量引用*/ /*通过指针变量引用*/
(2)若要引用结构体数组arr的第一个元素arr[1]中的成员score,可写成:
(3)如果某成员本身又是一个结构类型,则只能通过多 级的分量运算,对最低一级的成员进行引用。 此时的引用格式扩展为: 结构变量.成员 子成员.….最低 级子成员 成员.子成员 最低 最低1级子成员 结构变量 成员 子成员 例如,引用结构变量student中的birthday成员的格式分 别为: student.birthday.year student.birthday.month student.birthday.day (1)对最低一级成员,可像同类型的普通变量一样, 进行相应的各种运算。 (2)既可引用结构变量成员的地址,也可引用结构变 量的地址。 例如,&student.name ,&student 。
程序运行结果: No. Name Sex 000102 张三 男 000105 李四 男 000112 王五 女

结构体

结构体

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; }

每一个成员可以是基本类型的变量、数组或指针变量,也可以是其他结构体或共用体类型的变量、数组

或指针。成员虽然不能是本结构体类型的变量,但可以是本结构体类型的指针变量。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
❖ ……..
☆☆ 第8章 结构体、共用体与枚举类型
5
这些数组的数据在内存中的存储顺序是:先存储所有学生 的学号、再接着存储所有学生的姓名、接着性别、出生年 份、出生月份、联系电话、课程成绩、平均成绩。
也就是把所有学生的同一个类别(上表中某一列)以定义 某一个数组的形式单独放在一起,相当于所有学号放在一 个数组里里,所有姓名放在另一个数组里,依次类推,要 处理某一个学生的信息如计算平均值并打印某个学生的信 息,要分别查询所有不同的数组,很容易出错且效率不高。 这样为每一项内容分别定义变量或数组的方法导致存储结 构零乱,处理过程非常繁琐,一般不采用这种方法。
☆☆ 第8章 结构体、共用体与枚举类型
10
#include <stdio.h> #define M 10 struct student /*定义一个学生的结构体*/ { int stu_id; char stu_name[8]; struct date /*定义一个内嵌的结构体*/
☆☆ 第8章 结构体、共用体与枚举类型
9
【例9-1】按表9-1的形式从键盘依次输入每个学生的学号,姓 名,出生年月,三门课的成绩,计算并打印出每个学生的平均 成绩。 分析:这里首先要定义一个描述学生学号,姓名,出生年月, 三门课,平均成绩的结构体类型,再定义一个结构体变量,通 过循环语句对这个结构体变量的各个成员的引用,读入某一个 学生的各个数据项,再计算出某一个学生的平均成绩并打印某 个学生的各个数据项。接着读下一个学生的数据项,再计算和 打印各个数据项。
☆☆ 第8章 结构体、共用体与枚举类型
4
9.1 问题的提出与示例
❖ 如果按照以前学过的数组方法,可以定义如下的多个数组并 赋初值如下:
❖ int stu_id[100]={ 84773801 , 84773802, 84773803, 84773804, 84773805, 84773806}; /*定义一维数组存放每个学生的学号 */
☆☆ 第8章 结构体、共用体与枚举类型
7
如针对上述要求,可以定义为如下的学生的结构体:
strຫໍສະໝຸດ Baiduct student { int stu_id; /*学生的学号*/ char stu_name[8]; /*学生的姓名*/ char stu_sex; /*学生的性别*/
struct { int year; /*学生的出生年份*/
第9章 结构体、共用体与枚举类型
❖ 本章要求
▪ 为什么要引入结构体,结构体与数组有什么本质不同? ▪ 如何定义结构体,有几种定义形式? ▪ 结构体变量与结构体指针变量有何区别,它们如何各自引用
结构体成员? ▪ 结构体数据如何作为函数的参数? ▪ 为什么要引入链表,如何利用链表对内存进行动态管理?
❖ 本章重点
};
☆☆ 第8章 结构体、共用体与枚举类型
8
声明了一种新的数据类型struct student。这个数据类 型仅相当于一种结构模式,与int,float,char等类型 具有同等地位,也就是用户自定义了一种新的数据类 型,但并没有为struct student分配相应的存储空间, 就像系统并没有为int分配存储空间一样,而是需要定 义一个整型变量,为这个整型变量分配存储空间。同 样的,也需要一个结构体变量,为这个结构体变量分 配存储空间。
☆☆ 第8章 结构体、共用体与枚举类型
2
9.1 问题的提出与示例
❖9.1.1 结构体概述
例如,描述一个学生的数据实体包含学号、姓名、性别、 出生年月、课程成绩、家庭住址、联系电话等数据项。各 个数据项的类型是不同的,学号可为整型或字符串形式; 性别为字符型;出生年月又分为年,月,日,它们可以分 别为整型表示;课程成绩可以是整型或实型;家庭住址应 为字符串;电话号码可以是整型或字符串形式。对于这样 一个实体,不能统一用数组来描述,因为数组中各元素的 类型、长度必须一致。如果用独立的简单数据项或数组分 别表示它们,就不能体现一个实体数据的整体性和相互关 联性,也难以操作。对于这种由多种不同类型的数据组成 的数据实体,C语言专门用结构体数据类型来描述,结构体 中所包含的数据项称为结构体的成员,结构体由用户根据实 际来定义。
▪ 结构体变量的定义和使用 ▪ 链表的概念
❖ 本章难点
▪ 动态链表的常见操作
☆☆ 第8章 结构体、共用体与枚举类型
1
第9章 结构体、共用体与枚举类型
❖9.1 问题的提出与示例 ❖9.2 结构体类型的说明与变量定义 ❖9.3 结构体指针变量 ❖9.4 结构体数组 ❖ 9.5结构体与函数 ❖9.6 链表与动态内存管理 ❖9.7 结构体综合应用举例
int month; /*学生的出生月份*/
} birthday; int stu_phone; /*学生的联系电话*/ char stu_address[30]; /*学生的家庭地址*/ int stu_course[3]; /*学生的三门课成绩*/ float stu_average; /*学生的平均成绩*/
☆☆ 第8章 结构体、共用体与枚举类型
3
9.1 问题的提出与示例
❖ 下表是一张100个学生成绩管理表,要求计算并打印出每个学生的平均 成绩。
学号
姓名 性 出生年 联系电话 家庭地址 数学 英语 C程序 平均
别月
成绩
84773801 陈 男 1989.2 87500341 浙江宁波 80 89 76 云
❖ char stu_name[100][8]={“陈云”, “沈栋栋”, “易婷婷”, “谢浩杰”, “郑强”}; /*定义字符串数组存放每个学生的姓 名*/
❖ char stu_sex[100] ={‘m’ , ‘m’ ,‘f’ ‘m’, ‘m’}; /*定义字符数组 存放每个学生的性别*/
❖ int stu_year[100]={1989,1989,1990,1988,1988}; /*定义一维数 组存放每个学生的出生年份*/
☆☆ 第8章 结构体、共用体与枚举类型
6
未了解决这个问题,C语言定义了一种可由用户自定义的数据 类型,根据实际问题,将不同数据类型集中一起,把内在有 联系的不同类型的数据统一成一个整体,设计符合要求的新 的数据类型,称为结构体类型。这样利用结构体的特性可以 把某一个学生的所有相关的不同类型的数据项都顺序存储在 一起,便于一个个学生的处理。
相关文档
最新文档