第10章 结构体与共用体

合集下载

C语言程序ppt课件ch10 结构体与共用体PPT文档共42页

C语言程序ppt课件ch10 结构体与共用体PPT文档共42页
C语言程序ppt课件ch10 结构体与共 用体
1、战鼓一响,法律无声。——英国 2、任何法律的根本;不,不成文法本 身就是 讲道理 ……法 律,也 ----即 明示道 理。— —爱·科 克
3、法律是最保险的头盔。——爱·科 克 4、一个国家如果纲纪不正,其国风一 定颓败 。—— 塞内加 5、法律不能使人人平等,但是在法律 面前人 有什么损失。——卡耐基 47、书到用时方恨少、事非经过不知难。——陆游 48、书籍把我们引入最美好的社会,使我们认识各个时代的伟大智者。——史美尔斯 49、熟读唐诗三百首,不会作诗也会吟。——孙洙 50、谁和我一样用功,谁就会和我一样成功。——莫扎特

第10章 结构体与共用体

第10章  结构体与共用体

第10章结构体与共用体考核知识点●结构体与共用体类型数据的定义方法和引用方法●用指针和结构体构成链表,单向链表的建立、输出、插入与删除重要考点●对结构体的声明及定义●访问结构体的成员的方法●熟悉对链表的操作10.1 用typedef说明一种新类型名C语言规定可以用typedef说明一种新的类型名,说明新类型名的语句一般形式为:typedef 类型名称标识符;其中,“类型名”一定是在此语句之前已有定义的类型标识符。

“标识符”是一个用户定义标识符,用来标识新的类型名。

typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并没有产生新的数据类型,因此,原有的类型名依然有效。

提示:声明一个新的类型名的具体步骤如下:⑴先按定义变量的方法写出定义的主体(如float a;).⑵将变量名换成新类型名(如将a换成FLO)。

⑶在最左面加上关键字typedef(如typedef FLO).⑷然后可以用新类型名去定义其他的变量(如FLO b;).10.2 结构体类型在实际工作中,当我们需要把一些不同类型,但相互之间又存在着联系的信息组合应用时,就要用到结构体。

结构体是一种看似复杂却非常灵活的构造数据类型。

在通常情况下,一个结构体类型由若干个称为成员(或称为域)的部分组成。

不同的结构体类型可根据需要由不同的成员组成。

但对于某个具体的结构体类型,其成员的数量必须固定,这一点与数组相同;但结构体中各个成员的类型可以不同,这是结构体与数组的重要区别。

例如,我们常用的“时间”可以由以下3个部分描述:小时(hour)、分(minute)、秒(second)。

它们都可以用整型数表示,可以把这3个成员组成一个整体,并给它取名为time,这就是一个简单的结构体。

声明一个结构体类型的一般形式为:struct 结构体名{成员表列};struct是C语言中的关键字,是结构体类型的标志。

“结构体名”用做结构体类型的标志,它又称“结构体标记”(structure)。

零基础入门学习C语言课件第十章 结构体与共用体06

零基础入门学习C语言课件第十章 结构体与共用体06
enum weekday{ sun,mou,tue,wed,thu,fri,sat }; enum weekday a, b, c;
或者为:
enum weekday{ sun,mou,tue,wed,thu,fri,sat }a, b, c;
或者为:
enum { sun,mou,tue,wed,thu,fri,sat }a, b, c;
共用体变量的引用方式
只有先定义了共用体变量才能引用它,而且不 能引用共用体变量,而只能引用共用体变量中 的成员。
例如:前面定义了a、b、c为共用体变量
a.i (引用共用体变量中的整型变量i) a.ch(引用共用体变量中的字符变量ch) a.f (引用共用体变量中的实型变量f)
共用体类型数据的特点
不能把共用体变量作为函数参数,也不能使函 数带回共用体变量,但可以使用指向共用体变 量的指针
共用体类型可以出现在结构体类型定义中,也 可以定义共用体数组。反之,结构体也可以出 现在共用体类型定义中,数组也可以作为共用 体的成员。
应用情况
设有若干个人员的数据,其中有学生和教师。 学生的数据中包括:姓名、号码、性别、职 业、班级。教师的数据包括:姓名、号码、 性别、职业、职务。可以看出,学生和教师 所包含的数据是不同的。现要求把它们放在 同一表格中。
float f;
}a,b,c;
};
union data a,b,c;
共用体和结构体的比较:
结构体变量所占内存长度是各成员占的内存 长度之和。每个成员分别占有其自己的内存 单元。
共用体变量所占的内存长度等于最长的成员 的长度。
例如: 上面定义的“共用体”变量a、b、c各 占4个字节(因为一个实/整型变量占4个字 节),而不是各占4+1+4=7个字节。

专题10 结构体和共用体的概念及应用

专题10 结构体和共用体的概念及应用

4)使用typedef说明一个结构体类型,再用新类型名来定义变量(常用)
typedef { struct
typedef struct ST { struct date birthday; a; long int b; float sc[4]; char c[2]; }STREC; } NEW; // STREC是一个具体的结构体类型名,可以用它来定义相应的变量,就如int、char 则下面叙述中正确的是 一样,用它来定义变量时,就不能用struct A)以上的说明形式非法 B)ST是一个结构体类型 C)NEW是一个结构体类型 D)NEW是一个结构体变量 STREC std,pers[3],*pstd;
练习
3.以下结构体类型说明和变量定义中正确的是 [08年4月份题目] A)typedef struct {int n; char c;}REC; REC t1,t2; B)struct REC; {int n; char c;}; A REC t1,t2; C)typedef struct REC ; {int n=0; char c='A';}t1,t2; D)struct {int n;char c;}REC REC t1,t2;
练习
4.有以下程序[08年9月] C #include<stdio.h> struct st {int x,y;}data[2]={1,10,2,20}; main() { struct st *p=data; printf("%d,",p->y); printf("%d\n",(++p)->x); } 程序的运行结果是 A) 10,1 B)20,1 C) 10,2 D)20,2 5.有以下程序[08年9月] main() D { struct STU { char name[9]; char sex; double score[2];}; struct STU a={"Zhao",'m',85.0,90.0},b={"Qian",'f',95.0,92.0}; b=a; //结构体变量可以直接赋值 printf("%s,%c,%2.0f,%2.0f\n", , b.sex, b.score[0], b.score[1]); } 程序的运行结果是( ) A) Qian,f,95,92 B) Qian,m,85,90 C) Zhao,f,95,92 D) Zhao,m,85,90

零基础入门学习C语言课件第十章 结构体与共用体05

零基础入门学习C语言课件第十章 结构体与共用体05

对链表结点的删除操作实现
实现源代码:homework_2.c
对链表的插入操作
对链表的插入是指将一个结点插入到一个已有 的链表中。
为了能做到正确插入,必须解决两个问题: ① 怎样找到插入的位置; ② 怎样实现插入。
我们可以先用指针变量p0指向待插入的结点, p1指向第一个结点。将p0->num与p1->num相比 较,如果p0->num>p1-> num ,此时将p1后移, 并使p2指向刚才p1所指的结点。
对链表的插入操作

对链表的插入操作
我们设计出程序: homework_3.c
但是这个程序有些问题需要大家齐心协 力来发掘并研究方法解决!
例如我们要实现多次插入,问题就来了! (请大家到论坛上提交自己的解决方案~)
课后练习
作业:
尝试实现插入程序并尝试制作一个学生 成绩管理系统。(有兴趣的朋友可以将 作品提交到我们的论坛交流!)

第十章结构体与共用体

第十章结构体与共用体

试题汇编之:结构体与共用体一.选择题1.共用体定义为“union data{char ch;int x;}a;”下列语句正确的是。

A:a.ch=‟x‟;a=10; B:a a=‟x‟,10;C:a.x=10;a.ch=‟x‟; D:a=‟x‟;2.共用体定义为“union data{char ch;int x;}a;”下列语句不正确的是。

A:a={…x‟,10}; B:a.x=10;a.x++;C:a.ch=‟x‟;a.ch++; D:a.x=10;a.ch=‟x‟;3.对于:struct node{double x;char c;}*p;下列哪个赋值是错的。

A:p->x=2B:p.x=2.0 C.p->c=2 D.(*p).c=‟a‟4.对于以下结构定义:struct{int len;char *str;}*p;(*p)->str++中的++加在。

A:指针str上B:指针p上. C.str所指的内容上 D:表达式语法有错5.对如下定义:struct{char a1;int a2;}xx; union{char a1;int a2;int a3;}yy;如果sizeof(xx)的值为3,则sizeof(yy)的值应为:A:2 B:4 C:5 D:定义有错6.以下结构体变量定义语句中错误的是。

A.struct staffer{ long int code; float salary;} one;B.struct staffer{ long int code; float salary;} staffer one;C.typedef struct { long int code ; float salary;} STAFFER;D.struct { long int code; float salary; }one;-7.形如上题中定义的结构体变量,下列对此变量的输入形式中正确的是。

结构体与共用体zlh

结构体与共用体zlh
数据类型
结构体中每个成员可以是不同的 数据类型,而共用体中所有成员 必须是相同的数据类型。
结构体与共用体的区别与联系
• 使用方式:结构体中每个成员都可以单独访问和操作,而 共用体中一次只能使用其中一个成员。
结构体与共用体的区别与联系
自定义类型
结构体和共用体都是用户自定义的数据类型 ,可以根据需要组合不同的数据类型。
对于大型结构体和共用体,可以使用指针成 员来减少直接内存占用。
在跨平台编程时,要注意不同平台下的内存 对齐规则可能不同,需要进行相应的调整。
05
结构体与共用体的应用案例
案例一:使用结构体实现学生信息管理
定义学生结构体
包含学生姓名、学号、性别、年龄等字段。
创建学生信息数组
根据学生数量,创建相应大小的学生信息数组。
访问速度较慢
访问结构体的成员变量时,需要通过 指针或引用等方式进行间接访问,相 对于直接访问基本数据类型,速度较 慢。
结构体与共用体的优缺点分析
内存占用小
共用体中的所有成员变量共享同一块内存空间,因此相对于 结构体,共用体的内存占用较小。
访问速度快
访问共用体的成员变量时,可以直接通过内存地址进行访问 ,速度较快。
封装性好
结构体可以将多个变量封装在一起,形成一个自定义的数据类型,方便数据的 处理和管理。
结构体与共用体的优缺点分析
• 可扩展性强:结构体可以方便地添加或删除成员 变量,以适应不同的应用场景和需求。
结构体与共用体的优缺点分析
内存占用较大
由于结构体中每个成员变量都占用独 立的内存空间,因此相对于基本数据 类型,结构体的内存占用较大。
赋值给共用体变量
可以给共用体的任何一个成员赋值,如`data.f = 3.14;`,表示将 `data`的`f`成员赋值为3.14。

C语言 选择题库第10章 结构体与共用体

C语言 选择题库第10章 结构体与共用体

第10章结构体与共用体1.以下叙述中错误的是()。

A) 可以通过typedef增加新的类型B) 可以用typedef将已存在的类型用一个新的名字来代表C) 用typedef定义新的类型名后,原有类型名仍有效D) 用typedef可以为各种类型起别名,但不能为变量起别名参考答案:A【解析】关键字typedef的作用只是将C语言中的已有的数据类型作了置换,并不是增加新的类型,所以A)错误。

2.以下关于typedef的叙述错误的是A) 用typedef可以增加新类型B) typedef只是将已存在的类型用一个新的名字来代表C) 用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名D) 用typedef为类型说明一个新名,通常可以增加程序的可读性参考答案:A【解析】typedef并不是增加了新类型,而是用一个新名字替代已存在的类型,不能为变量说明一个新名,使用typedef可以增强移植性。

所以A选项错误。

3.若有以下语句typedef struct S{ int g; char h; } T;以下叙述中正确的是A) 可用S定义结构体变量B) 可用T定义结构体变量C) S是struct 类型的变量D) T是struct S类型的变量参考答案:B【解析】本题考查typedef重新声明一种结构体类型,那么T为结构体类型,而不是结构体变量,所以B选项正确。

4.设有以下语句typedef struct TT{ char c; int a[4]; } CIN;则下面叙述中正确的是A) CIN是struct TT类型的变量B) TT是struct类型的变量C) 可以用TT定义结构体变量D) 可以用CIN定义结构体变量参考答案:D【解析】本题考查typedef重新声明一种结构体类型,其中CIN为结构体类型名,而不是结构体变量,所以D 选项正确。

5.以下叙述中错误的是A) 可以用typedef将已存在的类型用一个新的名字来代表B) 可以通过typedef增加新的类型C) 用typedef定义新的类型名后,原有类型名仍有效D) 用typedef可以为各种类型起别名,但不能为变量起别名参考答案:B【解析】本题考查typedef的用法,typedef并不是增加一种新的类型,而是对已存在的类型用一个新的名字来代表,所以B选项错误。

第10章结构体与共用体

第10章结构体与共用体

一般形式:
struct { 类型标识符 成员名; 类型标识符 成员名; ……………. }变量名表列; 用无名结构体直接定义 变量只能一次
10/31/2018
江苏海事职业技术学院-------第10章 结构体与共用体
说明:
结构体类型与结构体变量概念不同 类型:不分配内存; 变量:分配内存 类型:不能赋值、存取、运算; 变量:可以 结构体可嵌套 结构体成员名与程序中变量名可相同,不会混淆 结构体类型及变量的作用域与生存期
struct [结构体名] { 类型标识符 成员名; 类型标识符 成员名; ……………. };
合法标识符 可省:无名结构体 成员类型可以是 基本型或构造型
struct是关键字, 不能省略
10/31/2018
江苏海事职业技术学院-------第10章 结构体与共用体
num
2字节

name
20字节 1字节 2字节 4字节
10/31/2018
江苏海事职业技术学院-------第10章 结构体与共用体
10.8 共用体
共用体类型定义 定义形式:
union 共用体名 { 类型标识符 成员名; 类型标识符 成员名; ……………. };
****类型定义不分配内存
例 union data { int i; char ch; float f; };
10/31/2018
江苏海事职业技术学院10章 结构体与共用体
用typedef定义类型
功能:用自定义名字为已有数据类型命名 类型定义简单形式: typedef type name; 例 typedef int INTEGER; 例 typedef float REAL; 例 INTEGER a,b,c; REAL f1,f2;

C语言学习入门笔记之结构体与共用体

C语言学习入门笔记之结构体与共用体

结构体与共用体笔记定义结构体C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体(structre)。

在其他一些高级语言中称为“记录”.定义后的结构体类型和系统提供的标准类型(如int, char, float, double 等)具有相似的作用,都可以用来定义变量,只不过int等类型是系统已声明的,而结构体类型是由用户根据需要在程序中指定的。

定义一个结构体类型的一般形式为:struct 结构体名{ 成员表列};注意:1.结构体类型的名字是由一个关键字struct和结构体名组合而成的(例如struct Student) ,结构体名是由用户指定的,又称“结构体标记”,以区别于其他结构体类型。

上面的结构体声明中Student就是结构体名(结构体标记)。

2.花括号内是该结构体所包括的子项,称为结构体的成员。

“成员表列"(member list)也称为“域表”(field list),成员表列由若干个成员组成,每一个成员是结构体中的一个域。

对每个成员也必须作类型说明,其形式为:类型说明符成员名;成员名的命名应符合标识符的书写规定。

例如:struct stu{int num;char name[20];char sex;float score;};3.一个结构体的成员可以属于另一个结构体类型(嵌套)。

例如:struct Date //声明一个结构体类型struct Date{ int month;//月int day;//日int year;//年}struct Student//声明一个结构体类型struct Student{ int num;char name[20];char sex;int age;struct Date birthday;//成员birthday属于struct Date 类型char addr[30];};结构体类型变量1.定义结构体类型变量说明结构变量有以下三种方法。

结构体与共用体

结构体与共用体
上一页 下一页 返回
10.1 结构体类型和结构体变量
如:
struct date
/*声明一个结构体类型*/
{ int month;
int day;
int year;
};
struct student
{int num;
char name[20];
char sex;
int age;
struct date birthday;/*birthday是struct date类 型*/
10.1.1 结构体型的定义
如前所述,结构体是由不同数据类型的数据组成的。组成结 构体的每一个数据称为该结构体的成员。在程序中使用结构 体时,首先要对结构体的组成进行描述,这称为结构体型的 定义,结构体型的定义是确定该结构体型由哪几个成员项组 成,以及每个成员项具有什么数据类型。
下一页 返回
10.1 结构体类型和结构体变量
10.1 结构体类型和结构体变量
注意不要忽略最后的分号。struct student向编译系统声 明这是一个“结构体类型”,它包括num、name、sex、 age、score和addr等不同类型的数据项。应当说明 struct student是一个类型名,它和系统提供的标准类型 (如int、char、float和double等)一样具有同样的地位 和作用,都可以用来定义变量的类型,只不过结构体类型需 要由用户自己指定而已。
上一页 下一页 返回
10.1 结构体类型和结构体变量
例10-1 定义如下结构体型。 struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; };

结构体和共用体-2结构体和数组的嵌套

结构体和共用体-2结构体和数组的嵌套

typedef struct {
int year; int month; int day; }DATE;
date
C语言程序设计
typedef struct date {
int year; char month[10]; int day; }DATE;
typedef struct student {
long studentID; char studentName[10]; char studentSex; DATE birthday; int score[4]; }STUDENT;
第10章 结构体和共用体
结构体数组的定义和初始化
typedef struct {
int year; int month; int day; }DATE;
date
typedef struct student {
long studentID; char studentName[10]; char studentSex; DATE birthday; int score[4]; }STUDENT;
C语言程序设计
SuXiaoHong
Q&A
C语言程序设计
第10章 结构体和共用体
结构体数组的定义和初始化
学号
姓名
性别
出生日期



数学
1
王刚
M
1991
M
1992
8
20
88
3
王丽红
F
1991
9
19
98
4
陈莉莉
F
1992
3
22
87
英语 计算机 原理 程序设计

结构体与共用体-枚举

结构体与共用体-枚举
枚举常量的定义
枚举常量是枚举类型的成员,每个枚举常量都有一个整数值与之对应,默认从0 开始,也可以显式指定。
枚举变量
枚举变量的声明
使用枚举类型名称声明枚举变量,例如`enum Color color;`。
枚举变量的赋值
枚举变量只能赋值为枚举常量列表中定义的整数 值或对应的枚举常量名称。
枚举变量的使用
嵌套共用体
嵌套共用体是一个共用体内部包含另一个共 用体或结构体的情况。
共用体变量
声明
共用体变量的声明方式与结构体 变量类似,需要使用共用体类型 名来定义变量。
访问
访问共用体变量的成员需要使用 成员访问运算符(.),且每次只 能访问一个成员。
01
02
定义
共用体变量是用来存储共用体类 型数据的变量。
03
结构体与共用体-枚举
目录
• 结构体概述 • 共用体概述 • 枚举概述 • 结构体、共用体与枚举的关系 • 结构体、共用体与枚举的应用实例 • 总结与展望
01
结构体概述
定义与特点
01
结构体是一种用户自定义的数据类型,允许将不同类型的数据 组合成一个有机的整体。
02
结构体中的数据可以是基本数据类型,也可以是其他结构体类
未来发展趋势预测
01 02
结构化数据处理
随着大数据时代的到来,处理结构化数据变得越来越重要。结构体作为 一种表示结构化数据的数据类型,将在数据处理和分析领域发挥越来越 重要的作用。
内存优化
共用体可以在相同的内存位置存储不同的数据类型,从而节省内存空间。 在内存资源紧张的情况下,共用体的使用将变得更加重要。
04
当需要提高代码的可读性和可维护性时,可以使用枚举类型来代替一 些硬编码的常量值。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

结构体变量的初始化
10.2.3 结构体变量的引用和初始化
struct student { char number[13]; //学号 char name[12]; //姓名 struct date birthday; //出生日期 float score[4]; //三门课成绩及平均分 }; struct student stuB= {"201315123001","王彤彤 ",{1992,8,15},80,90,76,0};
2. 拓展
① 如果是三本图书信息,输出单价最高(或最低) 的图书信息,如何实现?如果是100本图书或 者更多本的图书如何实现呢?
优化和拓展
10.3 结构体数组
10.3.1 结构体数组的定义和初始化 10.3.2 结构体数组应用举例
10.3.1 结构体数组的定义和初始化
一维结构体数组的定义形式
第一种形式如下: 结构体类型 数组名[常量表达式]; 第二种形式如下: struct 结构体名 { 成员表列 }数组名[常量表达式];
10.1 引例
① “学生成绩管理系统”中学生的属性主要包括: 学号、姓名、数学成绩、语文成绩、英语成绩、 平均成绩。 ② 如何描述一组学生属性?
#define MAX_SIZE 100 char no[MAX_SIZE][10]; char name[MAX_SIZE][10]; float score[MAX_SIZE][4];
struct student { char number[13]; //学号 char name[12]; //姓名 float score[4]; //三门课成绩及平均分 } stuA,stuB;
方法一
10.2.2 结构体变量的定义
(2)先声明结构体类型,再定义结构体变量。
struct student { char number[13]; char name[12]; float score[4]; }; //学号 //姓名 //三门课成绩及平均分
strcpy(stu2.number,stu1.number); strcpy(,); stu2.score[0]= stu1.score[0]; stu2.score[1]= stu1.score[1]; stu2.score[2]= stu1.score[2]; stu2.score[3]= stu1.score[3];
第10章 结构体与共用体
C语言教学组 E-mail: Tel:
第10章 结构体与共用体
10.1 引例 10.2 结构体类型与结构体变量 10.3 结构体数组 10.4 指向结构体类型数据的指针 10.5 线性表 10.6 共用体 10.7 枚举类型 10.8 用typedef声明新类型名
本单元内容
struct student stu1; //定义一个stu1结构体变量 sturct student stuA,stuB,stuC; //定义stuA、stub、stuC 三个结构体变量
方法二
10.2.2 结构体变量的定义
(3)声明结构体类型时,不指定类型名,而 无名的结构体类型 直接定义结构体类型变量。
//学号 //姓名 //三门课成绩 //平均分
student 结构体类型
10.2.1 结构体类型的声明
方式三
struct student { char number[13]; char name[12]; float math; float Chinese; float English; float average; };
//学号 //姓名 //数学成绩 //语文成绩 //英语成绩 //平均分
student 结构体类型
10.2.1 结构体类型的声明
结构体成员的数据类型可以是基本数据类型, 也可以是构造类型。
学号 姓名 出生日期 年 月 日 数学 语文 英 语 平均分
嵌套构造类型
10.2.1 结构体类型的声明
struct date { int year; //年 int month; //月 int day; //日 }; struct student { char number[13]; //学号 char name[12]; //姓名 struct date birthday; //出生日期 float score[4]; //三门课成绩及平均分 };
结构体u
结构体变量名.成员名=值;
10.2.3 结构体变量的引用和初始化
例如,要对结构体变量stu1的各个成员进行赋值。
strcpy(stu1.number,"201315123001"); //为stu1的学号赋值 strcpy(,"王彤彤"); //为stu1的姓名赋值 stu1.score[0]=80; //为stu1的数学成绩赋值 stu1.score[1]=90; //为stu1的语文成绩赋值 stu1.score[2]=76; //为stu1的英语成绩赋值 stu1.score[3]=(stu1.score[0]+stu1.score[1]+stu1.score[2])/3; //计算平均成绩
声明形式
10.2.1 结构体类型的声明
例如,引题中的学生信息管理系统中要管理学生信息,学生 的属性包括学号、姓名、三门课成绩、平均分,可以声明一 个student 结构体类型。
方式一
struct student { char number[13]; char name[12]; float score[4]; };
例子
10.2.3 结构体变量的引用和初始化
例如,要对结构体变量stu1的各个成员进行赋值。
printf("number=%s\n",stu1.number); printf("name=%s\n",); printf("score: %f,%f,%f,%f\n", stu1.score[0],stu1.score[1],stu1.score[2],stu1.score[3]);
在ANSI C中除了允许具有相同类型的结构体变量相互 赋值以外,一般对结构体变量的使用,包括赋值、输 入、输出、运算等都是通过结构体变量的成员来实现 的。 访问结构体变量的成员必须使用结构体成员运算符 (也称为圆点运算符)。 结构体变量名.成员名
结构体变量名.成员名=值;
结构体成员运算符
成员 成员 成员 成员
(2)设计算法。 ① 定义三个book结构体变量newbook1、newbook2、 maxpricebk; ② 分别输入两本图书的信息(书名、作者、出版社、出版 年、单价、ISBN); ③ 比较两本书的单价,如果图书newbook1的单价高于图书 newbook2,则将newbook1的值赋值给maxpricebk,如果学 生图书newbook2的单价高于图书newbook1,则将 newbook2的值赋值给maxpricebk。
//学号 //姓名 //出生日期 //三门课成绩及平均分
std.birthday.year=1992; std.birthday.month=8; std.birthday.day=15;
10.2.3 结构体变量的引用和初始化
C语言允许对具有相同结构体类型的变量进行 整体赋值 stu2=stu1;
10.1 引例
1. 回忆已经学过的数据类型?
① ② ③ ④ 基本类型(整型、浮点型、字符型) 数组 指针 空类型
10.1 引例
① “学生成绩管理系统”中学生的属性主要包括: 学号、姓名、数学、语文、英语、平均成绩。 ② 如何描述一个学生属性? char no[10]; char name[10]; float score[4];
定义形式
10.3.1 结构体数组的定义和初始化
一维结构体数组的定义形式
第三种形式如下: struct { 成员表列 }数组名[常量表达式]; struct student stu[10];
定义形式
10.3.1 结构体数组的定义和初始化
一维结构体数组的初始化
struct student stu[10]={ {"201315123001","王彤彤",{65,86,82.5,77.8}}, {"201315123002","李明宇",{74.5,70,66,70.2}}, {"201315123003","白雯雯",{45,66.5,78,63.2}}, };
例子
10.2.3 结构体变量的引用和初始化
struct date { int year; //年 int month; //月 int day; //日 }; struct student { char number[13]; char name[12]; struct date birthday; float score[4]; }std;
学 号 姓 名 20131 51230 王彤 彤 01
出生日期 年 月 日
1992 8 15
数 学 语 文 英 语 平 均 分 80 90 76 用和初始化
【例10.1】程序员小张要做一个简单的图书管理系统,当前 阶段的工作是要求把一本书的基本信息放在一个结构体变量 中,然后输出这本书的信息。
//学号 //姓名 //三门课成绩及平均分
student 结构体类型
10.2.1 结构体类型的声明
例如,引题中的学生信息管理系统中要管理学生信息,学生 的属性包括学号、姓名、三门课成绩、平均分,可以声明一 个student 结构体类型。
方式二
struct student { char number[13]; char name[12]; float score[3]; float average; };
相关文档
最新文档