最新C语言程序设计——结构体和共用体(完整版)课件PPT

合集下载

程序设计与C语言第8章结构体、共用体及枚举类型幻灯片

程序设计与C语言第8章结构体、共用体及枚举类型幻灯片
第8章 结构体、共用体及枚举类型
程序设计与C语言第8章结 构体、共用体及枚举类型
幻灯片
本课件PPT仅供大家学习使用 学习完请自行删除,谢谢! 本课件PPT仅供大家学习使用 学习完请自行删除,谢谢!
《程序设计C语言》
第8章 结构体、共用体及枚举类型
8.1 构造体类型
1. 构造体类型的定义 要定义构造体变量,首先要定义构造体类型。构 造体类型定义的一般形式是: struct[<构造名>] {
《程序设计C语言》
第8章 结构体、共用体及枚举类型
(2)还可以在一个构造体内部直接嵌套定义: Struct student {
unsigned num; char name[10]; int age; float score; struct {
int year; int month; int day; 《程序}b设i计rthC语da言y》;
《程序设计C语言》
第8章 结构体、共用体及枚举类型
图8―1 结构体数组的逻辑结构 《程序设计C语言》
第8章 结构体、共用体及枚举类型
2. 对构造体分量的引用 对构造体分量的引用有三种方法:用点运算符引 用法;用指向运算符引用法;对数组元素的分量用下 标加点或指向运算符引用法。下面分别加以说明。 (1)用点运算符引用构造体变量的分量的方法, 有两种引用形式:
stu1=stu2; 那么使stu1的各分量具有了和stu2各分量一样的 《程值序。设计C语言》
第8章 结构体、共用体及枚举类型
4. 构造体指针变量的定义 除了定义构造体变量之外,还可定义构造体指针 变量。如:
struct student stu1,*p; p是构造体类型指针。像其它类型的指针一样, 构造体指针只有和某个构造体变量发生了联系,即得 到了构造体变量的首地址之后才能被使用。如

C语言程序设计ppt第9章 结构体、共用体和用户定义类型

C语言程序设计ppt第9章 结构体、共用体和用户定义类型

9.1.1 结构体类型数据的定义
• • • • 1.声明结构体标识名后,再定义结构体变量 格式: struct 结构体标识名 结构体变量名表 例如:在前面声明了结构体类型Student后,再来定义结构体变量stu1 和stu2。 • struct Student stu1,stu2; • 这种形式和定义其它类型变量形式相似(如int a,b;)。变量stu1和 stu2则具有Student类型的数据结构,是由多个数据成员组成的构造类 型的变量,如下图所示: • 在定义了结构体变量后,系统会为之分配内存单元,stu1和stu2分别占 据一段连续的存储单元,在Visual C++环境中,stu1和stu2分别占据33 字节(name 20个字节,sex 1个字节,age 4个字节,num 4个字节, score 4个字节)。
9.1 结构体
• • • • 9.1.1 结构体类型数据的定义 9.1.2 结构体类型数据成员的引用 9.1.3 结构体数组 9.1.4 结构体指针
9.1.1 结构体类型数据的定义
• • • • • • • • • • • • • • • • • • • • • 用户建立由不同类型数据组成的组合型的数据结构,称之为结构体类型,组成结构体 类型的每一个数据称之为该结构体类型的成员。在使用结构体类型时,首先要对结构 体类型的组成进行说明,称之为结构体类型的定义。 格式: struct 结构体标识名 { 数据类型 结构体成员名1; 数据类型 结构体成员名2; … 数据类型 结构体成员名n; }; 其中:“struct”为定义结构体类型的关键字。 例如: 以上学生的信息可定义为下列一个名为Student的结构体类型: struct Student // Student为结构体标识名 { char name[20]; //每个成员项以分号(;)结束 char sex; int age; int num; float score; }; //结构体定义以分号(;)结束 以上定义中,结构体类型Student由5个成员组成。

C语言程序设计结构体共用体及位运算PPT课件

C语言程序设计结构体共用体及位运算PPT课件

个结构。成员可以在程序中单独使用,与普通变量完全相同。表示结构变量
成员的一般形式是:

结构变量名.成员名

例如:

jilu1.bianhao
/*记录1的编号
*/
• */

jilu2.xingbie
这有点像数据库中的字段。 第5页/共38页
/*记录2的性别
• 12.1.4 结构变量的赋值
• 完成。
结构变量的赋值就是给各成员赋值。可用输入语句或赋值语句来
放一个英文字母或符号,一个汉字通常要用两个字节来存储。每一个字节都
有自己的编号,叫做“地址”。一个字节由若干位(位的英文是bit)组成。
至于一个字节由几个位组成,取决于计算机的硬件系统。一般由8位、16位
或32位组成,所对应的计算机也被称为“8位机、16位机或32位机”。目
前微机以16位机或32位机为主。但在本书中作为原理讲述的是8位机。

我们把若干字节组成一个单元,叫做“字”(英文为word)。
一个字可以存放一个数据或指令。
第20页/共38页
• 2 原码

我们知道,计算机使用的是二进制数。但这些数据有不同的编码
方式,分别有原码、反码和补码。

以8位计算机系统为例,我们把最高位(即最左面的一位)留做
表示符号,其他7位表示二进制数,这种编码方式叫做原码。最高位为“0”

示例:如x=01010011,y=x>>2,则
y=00010100。

注意,左移会引起数据的变化,具体说,左移一位相当于对原来
的数值除以2。左移n位相当于对原来的数值除以2n。

• 4 按位与

C语言程序设计第9章结构体与共用体简明教程PPT课件

C语言程序设计第9章结构体与共用体简明教程PPT课件

//书名 //作者 //出版社 //价格
【例9.2】定义一个结构体类型struct student,描 述学生的基本信息,包含学号、姓名、性别和成绩
struct student { int num; //学号 char name[20]; //姓名 char sex; //性别, M-男,F-女 float score; //成绩 };
第9章
结构体与共用体
第9类型,但在实际问题中, 数据要复杂一些,往往具有不同的数据项和类型: 例如: 图书基本信息 用户自定义 学生基本信息 数据类型 球赛基本信息 ……
方法:创建结构体类型、共用体类型(或称为联合 体类型)和枚举类型
C语言程序设计 第9章 结构体与共用体 2
9.1 结构体类型
整 型
单精度型float
基本类型
实型(浮点型)
双精度型double
字符类型char
C 数 据 类 型
数组 构造类型
结构体struct 共用体union 枚举类型enum 指针类型
本章所介绍 空类型void 的数据类型
C语言程序设计
数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 3. 其上可进行的操作
C语言程序设计
定义了结构体类型: struct book 定义了结构体变量: book1,book2;
第9章 结构体与共用体
14
• 方式三:
定义无名结构体类型的同时定义结构体变量
struct { 成员列表 } 变量名列表; struct { char name[40]; char author[100]; char publish[100]; float price; }book1,book2; 说明:第三种方法,由于没 有给出结构体类型标识符, 在实际应用中,此方法往往 是一次性的,适用于定义临 时的局部变量或者嵌套的结 构体成员变量。

精品《C语言程序设计》PPT课件第11章 结构体与共用体

精品《C语言程序设计》PPT课件第11章 结构体与共用体

11.2
定义结构体类型变量的方法
嵌套的结构:
struct date { int month; int day; int year; };
struct{ int num; char name[20]; char sex; struct date birthday; float score; }boy1,boy2;
11.4结构体变量的赋值
boy1.num=102; ="Zhang ping"; printf("input sex and score\n"); scanf("%c %f",&boy1.sex,&boy1.score); boy2=boy1; printf("Number=%d\nName=%s\n",boy2.num,boy2. name); printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score); }
11.2
定义结构体类型变量的方法
(1)先定义结构,再说明结构变量。
也可以用宏定义使一个符号常量来表示一个结构类型。
例如:#define STU struct stu STU { int num; char name[20]; char sex; float score; }; STU boy1,boy2;
和定义结构体变量的方法相仿,只需说明为数组即 可,例如:
struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; }; struct student stu[3];

《结构体和共用体》PPT课件

《结构体和共用体》PPT课件

精选课件
13
在C语言的运算符中,取成员运算符“.”优先级最高, 故以上语句均为对引用之后的成员变量进行操作。若结构体 定义是嵌套的,则只能引用最低级的成员(用若干“.”运 算符,逐级引用到最低级)。如
stud3.birthday.year 是合法的,而
stud3.year 是非法的。
精选课件
14
2. 结构体类型变量可以整体引用来赋值。如stud2= stud1;即将变量stud1的所有成员的值一一赋给变量 stud2的各成员。结构体型变量只能对逐个成员进行输入或 输出,不可进行整体的输入输出,如:
};
有同样的地位和作分用号,不都可可少以用来定义变
量的类型。
精选课件
5
定义一个结构体类型的一般形式为: struct 结构体名
{ 类型标识符 成员1; 类型标识符 成员2; … 类型标识符 成员n;
};
成员的类型可为除该结构体类型外的任何一种类型,如 基本类型、指针类型和结构体类型。
精选课件
6
若定义结构体类型struct date如下:
10
3. 直接定义结构体类型变量,其一般形式为:
struct
{
成员表列;
}变量名表;
即不出现结构体名。如
struct
{char num[10];
char name[20];
char sex;
ቤተ መጻሕፍቲ ባይዱ
struct date birthday;
float score[3];
char tel[12];
}stud3,stud4;
结构体类型的名称
char sex;
结构体成员列表,
char birth在dasytr[u8c];t studen包t括类每型个起结作构用体的成范围内, float scorest[r3u]c;t student员和的系类统型提及供名的称标准类型

C语言程序设计教程第9章 结构体共用体PPT课件

C语言程序设计教程第9章 结构体共用体PPT课件

2020/7/30
10
举例:
定义结构体: struct stu
{ char num[20]; char name[20]; char sex; float score;
}; 声明结构体变量: struct stu student1, student2;
2020/7/30
11
② 声明结构体类型的同时定义结构体 变量
第9章 结构体、共用体
9.1 结构体类型概述
9.2 结构体类型变量的定义和引用
9.3 结构体数组
9.4 结构体与指针
9.5 结构体与函数
9.6 链表的基本操作
9.7 共用体类型数据的定义和引用
9.9 位运算和位段
9.10 自定义类型(typedef)
9.11 常见错误及改正方法
2020/7/30
1
整体 概述
struct 结构体名 {
成员表列 }变量名表列;
如: struct stu { char num[20];
char name[20]; char sex; float score; } student1, student2
2020/7/30
12
③ 直接定义结构体类型变量
struct { 成员表列 }变量名表列; 这种定义方法没有出 现结构体名,只能定义 变量一次。
表中,通常包括学在生C语的言中学称号为结、构姓体类名型、性别、年
龄、姓成名绩、年家龄庭性地别址民等族项文目化。程度数组住只址能按电序话号组码 织多字符个数同组 类整型型的字数符据字,符显然整我型 们不字符能数用组 一长个整数型
2020/7/30
4
组来存放这一组数据。
9.1.1 结构体类型定义
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
void main( ) {struct student
{int num; char name[20]; float score; }stu1={1301,”Zhang San”,82.50},*pstu; pstu=&stu1; printf(“No.%d,Name:%s,Score:%f\n”,
当对全部元素进行初始化赋值时,也可以不给出长度。
§12.142.1.指4向结结构构体体变指量针的变指量针
一般形式为:ruct student {int num; char name[20]; float score; }; struct student *pstu;
{int num; char name[20]; float score; }stu1={1301,”Zhang San”,82.50}; printf(“No.%d,Name:%s,Score:%f\n”,
stu1.num,,stu1.score);
}
结构通过体输变入量语句的或赋赋值值语句,实现对结构体变量的
stu1.num,,stu1.score); printf(“No.%d,Name:%s,Score:%f\n”,
(*pstu).num, (*pstu). name, (*pstu). score); printf(“No.%d,Name:%s,Score:%f\n”,
pstu->num, pstu-> name, pstu-> score);
C语言程序设计——结构体和共 用体(完整版)
n 问题:
有时需要将不同类型的数据组合成一个有机
的整体,以便于引用。如:
一个学生有学号/姓名/性别/年龄/地址等属性 int num; char name[20]; char sex; int age; int char addr[30];
num name sex age score addr 100101 Li Fun M 18 87.5 Beijing
其中,定义了一个结构体数组stu,共有3个元素, 每个元素都具有struct student的结构形式。
结构体数组的初始化赋值
例:struct student {int num; char name[20]; float score; }stu[3]={{1301,”Zhang San”,57}, {1302,“Li Si”,82.50},{1303,“Wang Wu”,69}};
stu1.num,,stu1.score); }
嵌套的结构体
一个结构体的成员又是一个结构体。
例: struct date
struct student
{int month;
{int num;
int day;
char name[20];
int year;
char sex;
}
int age;
成员赋值。 例:#include<stdio.h>
void main( ) {struct student
{int num; char name[20]; float score; }stu1; stu1.num=1301; =”Zhang San”; scanf(“%f”,&stu1.score); printf(“No.%d,Name:%s,Score:%f\n”,
结构体变量成员的表示方法: 结构体变量名.成员名
例:stu1.num (学生1的学号) stu1.score(学生1的分数)
结构体变量的初始化
和其他类型变量一样,定义结构体变量的同时,
给它的成员赋初值。 例:#include<stdio.h>
void main( ) {struct student
{int num; char name[20]; float score; }stu1, stu2;
结构体变量的定义
(3)直接定义结构体类型变量 例:struct
{int num; char name[20]; float score; }stu1, stu2;
结构体变量的引用
一般对结构体变量的使用,包括赋值、输入、 输出、运算等都是通过其成员来实现的。
}
12.4.2指向结构体数组的指针变量
结构体指针变量可指向一个结构体数组,其指针变 量的值是整个结构体数组的首地址。
例: 设ps为指向结构体数组的指针变量, 则ps指向该结构体数组的0号元素; ps+1指向该结 构体数组的1号元素。
例:#include<stdio.h> void main( ) {struct student {int num; char name[20]; float score; }stu[3]={{1301,”Zhang San”,57}, {1302,“Li Si”,82.50},{1303,“Wang Wu”,69}}; struct student *ps=stu; ps++; printf(“No.%d,Name:%s,Score:%f\n”, ps->num, ps-> name, ps-> score); }
其中定义了一个指向student的指针变量pstu。
12.4.1指向结构体变量的指针变量
用结构体指针变量,访问结构体变量的各个成员,
一般形式为:
(*结构体指针变量).成员名;

结构体指针变量- >成员名;
例: (*pstu).num 或 pstu- >num
例:#include<stdio.h>
struct date birthday;
char addr[30];
};
num name sex age
birthday
addr
month day year
§12.3结构体数组
结构体数组的每一个元素都是具有相同结构类型 的结构体变量。
例:struct student {int num; char name[20]; float score; }stu[3];
结构体变量的定义
(1)先声明结构类型,再定义结构体变量 例:struct student
{int num; char name[20]; float score; }; struct student stu1, stu2;
结构体变量的定义
(2)在声明结构类型的同时定义结构体变量 例:struct student
相关文档
最新文档