第8章结构体.ppt

合集下载

计算机导论第八章 程序设计语言

计算机导论第八章 程序设计语言

汇编语言比机器语言易读、易维护。但计算 汇编语言比机器语言易读、易维护。 机并不认识这些符号, 机并不认识这些符号,因此就需要一个专门 的程序负责将这些符号翻译成二进制数的机 器语言,这种翻译程序被称为汇编程序 汇编程序。 器语言,这种翻译程序被称为汇编程序。
1957年,第一个完全脱离机器硬件的高级语言- FORTRAN 年 第一个完全脱离机器硬件的高级语言 问世了。此后, 多年来 共有几百种高级语言出现。 多年来, 问世了。此后,40多年来,共有几百种高级语言出现。
信息表管理程序 编译过程
编译程序工作时,先分析,后综合, 编译程序工作时,先分析,后综合,从而得 词 语 语 中 代 目 到目标程序。所谓分析, 到目标程序。所谓分析,是指词法分析和语 法 法 义 间 码 标 分 分 分 代 优 代 法分析;所谓综合是指代码优化, 码 法分析;所谓综合是指代码优化,存储分配 析 析 析 码 化 程 程 程 生 程 生 和代码生成。 和代码生成。 序 序 序 成 序 成
8.2.3 赋值语句
赋值操作的意义就是把一个确定的数值放到 某个变量代表的那个内存单元中去。 某个变量代表的那个内存单元中去。 赋值号: 赋值号: “=”表示赋值操作 表示赋值操作 左值: 左值:等待被赋予值的变量 右值:将要被赋予的“ 右值:将要被赋予的“值”
8.2.4 分支语句
分支语句
成立
a
8.2程序设计语言的基本元素 程序设计语言的基本元素
1. 2. 3. 4. 5. 6. 7.
变量 数据类型 赋值语句 分支语句 循环语句 过程(函数) 过程(函数) 注释语句
8.2 基本元素
8.2.1 变量和常量
变量:在程序运行过程中, 变量:在程序运行过程中,其值可以被改变的量 称为变量。变量的两个要素: 变量名 变量名。 称为变量。变量的两个要素:1)变量名。每个变 量都必须有一个名字--变量名, --变量名 量都必须有一个名字--变量名,遵循标识符命 名规则。 )变量值。在程序运行过程中, 名规则。2)变量值。在程序运行过程中,变量 值存储在内存中。 值存储在内存中。程序通过变量名来引用变量的 值。 常量:在程序运行过程中, 常量:在程序运行过程中,其值不能被改变的量 变量在使用前, 变量在使用前,在内 称为常量。常量可分为整型常量,实型常量, 称为常量。常量可分为整型常量,实型常量,字 存中会给每个变量申 符常量,符号常量。 符常量,符号常量。 请一定的大小的空间。 请一定的大小的空间。

C语言 第八章.用户自定义数据类型

C语言   第八章.用户自定义数据类型
printf("%c,%c\n",u2.c[0],u2.c[1]); }
u2占2个字节
例:以下程序输出结果是?
union example { struct { int x,y; e.b e.a e.in.x }in; e.in int a; e.in.y int b; }e; void main() { e.a=1;e.b=2; e.in.x=e.a*e.b; e.in.y=e.a+e.b; printf("%d,%d",e.in.x,e.in.y); }
内存低地址 01100001 00001010
字符变量c占1个字节
整型变量i占2个字节 单精度实型变量f占4个字节
u1.i=10;
例:以下程序输出结果是?
union u_type { char c[2]; u1
p
内存高地址 内存低地址 ‘a’ ‘b’ c1 c2 c[1] c[0] u1占2个字节 内存高地址 内存低地址 ‘A’ ‘B’ ‘a’ ‘b’ c1 c2 c[1] c[0]
{"0208103322","lisi",19,'M'},{"0208103323","lili",20,'F'}, {"0208103324","xulin",21,'M'}};
学号(number) 姓名(name) 年龄(age) 性别(sex)
stu[0] stu[1] stu[2] stu[3]
char name[8];
int age; char sex;
定义结构体类 sizeof(stu) 型的同时创建 =? 结构体数组

C语言完整 ppt课件

C语言完整 ppt课件
1.4.1 宏定义
用一个标识符来表示一个字符串,称为“宏”,标识符称为“宏名”。在 程序中 用宏名替代字符串称为“宏调用”。在编译预处理时,将对程序中所有出现的 “宏 名”,都用宏定义中的字符串代换,这个过程称为“宏展开”。
1.4.1.1 不带参数的宏定义
格式为:#define 标识符 字符串
1.4.1.2 带参数的宏定义
1-4
1.3 C程序上机步骤
C源程序编好后,要经过编辑、编译、连接, 生成可执行文件后,才可运行。
运行集成开发软件
编辑源程序
编译
有 有错? 无 连接
不正确
运行
结果正确? 正确
结束
1-5
1.4 编译预处理
编译预处理是指,在C编译程序对C源程序进行编译之前,由编译预处理程 序对源程序中的预处理命令进行处理的过程。
1.2.1 C语言程序举例
1.2.2 C语言程序的结构
1.2.2.1 函数是C语言程序的基本单位。
1.2.2.2 函数的一般结构
任何函数(包括main()函数)都是由函数首部和函数体两部分组成。
1. 函数首部: 函数首部即函数第一行,由函数类型、函数名和函数参数表三部分组成。
2. 函数体: 函数体为函数首部下面的花括号{……}内的部分。 函数体一般由声明部分和执行部分构成:声明部分定义所用到的变量,声明所调用的函数等; 执行部分有若干语句组成。
2.6.1 运算符及表达式简介 2.6.1.1 运算符
C语言中的运算符具有2个特点: ⑴ 运算符的优先级 C语言中,运算符的优先级共分为15级,1级最高,15级最低。 ⑵ 运算符的结合性 C语言中各运算符的结合性分为左结合性(从左到右)和右结合性(从右到左)。 2.6.1.2 表达式 表达式是由常量、变量、函数和运算符组成的式子。 表达式求值是按运算符的优先级和结合性规定的顺序进行的。

大一C语言实用课件

大一C语言实用课件
• 1980年贝尔实验室的Bjarne Stroustrup对C语言 进行了扩充,推出了“带类的C”,多次修改后起 名为C++。以后又经过不断的改进,发展成为今 天的C++。
• Visual C++是Microsoft公司推出的基于 Windows平台的C++可视化开发环境。使用版 本Visual C++ 6.0
数值范围 10-38~1038 10-308~10308 10-4932~104932
double 16(8) 19
如:
float x,y;
double z;
五、 字符型数据
1. 字符常量 • 用单引号括起来的单个字符,如‘a’,’b’等。 • 转义字符:以\开头的特殊字符。
如:\n 表示回车换行
• 各种C语言的版本都是按照ANSI C作为标准的。 • 主要版本有:
Microsoft C, Turbo C, BORLAND C等。
• 实验环境:
Visual C++ 6.0
二、特点
1 语言简洁、紧凑,使用方便、灵活 2 运算符丰富 3 数据结构丰富 4 具有结构化的控制语句 5 程序设计自由度大
• 不合法的标识符:2a,x/y,a>b等。
使用标识符应注意:
• C语言中标识符区分大小写字母。即:大 写字母和小写字母被认为是两个字母。如: Sum,SUM,sum是不同的标识符。 • 标识符的长度没有统一的规定。
二、常量与变量
1. 常量与符号常量 • 常量:在程序运行过程中,值保持不变的量叫 ~。如:10,0,-3,4.2,-1.3,‘a’,’b’等。 • 符号常量:用标识符表示的一个常量称为~。 通常用大写字母表示。 如:#define PI 3.14159 main() 符号常量 { float r,area; r=10; area=PI*r*r; printf(“area=%f\n”,area); }

C语言开发基础教程(Dev-C++) 第8章 结构体

C语言开发基础教程(Dev-C++) 第8章 结构体

Woman
25
Shanghai

8.1.2 结构体变量定义
2、在定义结构体类型的同时定义结构体变量
struct student{ int num; char name[10]; char sex; int age; char address[30];
}stu1,stu2;

8.1.3 结构体变量的大小

8.1.2 结构体变量定义
1、先声明结构体类型,再声明结构体变量 定义了结构体变量stu1与stu2之后,stu1与stu2便占据了内存空间,它 们具有结构体特征。
stuu11: 201403001 Zhang San Man
23
Beijing
ssttuu22: 201403002 Li Yun

8.3 结构体与指针
指针还可以指向结构体,指向结构 体的指针称为结构体指针,它的用 法与一般指针用法没有太大差异。

8.3.1 结构体指针
结构体指针的定义方式与一般指针类似: struct Student Stu = {"Zhang San", 20140100, 'M', 93.5}; struct Student *p = &Stu; 通过结构体指针可以访问结构中的成员变量,其格式如下: 结构体指针名->成员名 p->name; //访问结构体的name成员变量
结构体类型的声明
struct 结构体类型名称 {
数据类型 成员名1; 数据类型 成员名2; … 数据类型 成员名n; };
struct student{ int num; char name[10]; char sex; int age; char address[30];

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

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

当通过指针变量引用结构体成员时,若表达式中含有++,-等运算符时,应根据运算符优先级来确定表达式含义。例: ++ p-> score 相当于++( p-> score),结果使score加1。 (++ p)-> score 则再访问成员score之前,使p加1。 例:struct abc {char a[20]; int *pt; }p; pt是结构体类型中的成员,则表达式*p->pt引用的是pt所 指存储单元; *p->pt++是再引用了pt所指存储单元后,使 指针pt加1;( *p->pt)++使pt所指向的单元的值加1;而 *p ++ ->pt在访问了pt所指存储单元后,p加1。
例: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.将一个结构体变量作为一个整体赋给另一具有相同类型的 结构体变量 例:struct {char name[15]; int num; }stud1,stud2={“wangfang”,01}; 执行赋值语句: stud1=stud2; 则stud2中把每个成员的值依次赋给stud1中对应的同名成员。 C不允许把一个结构体变量作为一个整体进行输入和输出。 例: scanf(“%d”,& stud1); printf(“%d”,stud1);都是错误的 结构体变量有多个不同类型的数据项,必须逐个用相应的格 式像普通变量一样输入和输出。 scanf(“%s,%d”, stud1. name ,& stud1.num); 注意name[15]是数组,数组名本身就是地址。

C语言开发基础教程(Dev-C++) 第8章 结构体

C语言开发基础教程(Dev-C++) 第8章 结构体


8.5 typedef的使用
3、为结构体类型取别名 typedef struct Student{
int num; char name[10]; char sex; }STU; STU stu1; //struct Student stu1;

8.6 阶段案例——学生成绩管理系统
一、案例描述 案例要求模拟开发一个学生成绩管理系统,此系统具有以下功能: (1)添加学生信息,包括学号、姓名、语文、数学成绩; (2)显示学生信息,将所有学生信息打印输出; (3)修改学生信息,可以根据姓名查找到学生,然后可以修改学生姓 名、成绩项;

8.1.2 结构体变量定义
1、先声明结构体类型,再声明结构体变量 定义了结构体变量stu1与stu2之后,stu1与stu2便占据了内存空间,它 们具有结构体特征。
stuu11: 201403001 Zhang San Man
23
Beijing
ssttuu22: 201403002 Li Yun
struct student {
char a; double b; int c; short d; };
字节对齐

脚下留心:结构体嵌套
结构体类型中的成员可以是一个结构体变量。这种情况称为结构体嵌套。
struct Date {
int year; int month; int day; };
struct student{ char num[12]; double b; int c; struct Date d;
};
struct Student students[3] = { 定义数组 {20140101, "Zhang San",'M'}, {20140102, "Li Si",'W'} {20140103, "Zhao Liu",'M'} };

四川大学《c语言程序设计》课件-第8章 结构体与共用体

四川大学《c语言程序设计》课件-第8章 结构体与共用体
男 1999
90 83 72 82
2 林平之
男 1999
78 92 88 78
3 岳灵珊
女 1999
89 72 98 66
4 任盈盈
女 1999
78 95 87 90
结构体的解决方法
struct STUDENT
{ int studentID;
/*每个学生的序号*/
char studentName[10];/*每个学生的姓名*/
};
结构体变量的指针
struct STUDENT
{
int
studentID;
char
studentName[10];
char
studentSex[4];
struct date timeOfEnter;
int
scoreComputer;
int
scoreEnglish;
int
scoreMath;
int
结构体的内存占用
double 占用内存字节数 = 8 struct 类型用内存字节数 = ? 是所有成员变量的内存总和吗?
用运算符sizeof获得结构体大小 sizeof(变量或表达式) sizeof(类型)
struct number
{ short i; char ch;
float f;
};
printf("%d\n", sizeof(struct number));
struct STUDENT *pStu; /*定义结构体指针*/
pStu = &stu;
通过stu和成员运算符访问结构体成员
– stu. studentID = 1;
通过pStu和指向运算符访问结构体成员
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2020/10/5
9
举例
struct s { int x;
int y; } vs ;
A) s . x = 10 ; C) struct va;
va . x = 10;
B) s . vs . x = 10; D) struct s va = {10};
2020/10/5
10
结构体变量的输入与输出
C语言规定,不能将一个结构体变量作为一个 整体实施输入、输出的操作,只能对每个具体 的成员进行输入、输出操作。
结构体类型 – 把关系紧密且逻辑相关的多种不同类型的数据组织到
统一的名字之下,这样的集合称为结构体类型。
结构体变量 – 结构体类型的变量占用相邻的一段内存单元
2020/10/5
4
结构体类型的定义
一般形式:
struct 结构体类型名 {
类型关键字 成员名1; 类型关键字 成员名2; …... 类型关键字 成员名n; };
定义一个"别名"。
举例:
typedef struct student STUD; STUD student1,student2;
STUD与 struct student类型是同义词
2020/10/5
7
结构体变量的内存占用
按照域表中域的先后顺序依次在内存中划分存 储单元给每个域。 直接用结构体的每个成员类型所占内存字节数 的和作为一个结构体实际所占的内存字节数是 不正确的。 我们用sizeof函数获得结构体变量所占的字节 数。
2020/10/5
8
结构体变量的引用
一般形式: 结构体变量名 . 成员名
结构体变量的初始化
举例: struct student st1= {101,"zhangsan",'M',85,69};
struct student {
int num; char name[20]; char sex; float shx; float jsj; float aver; float sum; };
第8章 结构体
本章内容
结构体类型的定义 结构体变量的定义 结构体数组 结构体与指针 链表的概念及操作
2020/10/5
2
引例
输入10位同学的一组信息,包括学号、姓名、性 别、数学成绩、计算机成绩,求得每位同学的平 均分和总分,然后按照总分从高到低排序。 (8-引例)
2020/10/5
3
结构体类型与变量的概念
2020/10/5
16
结构体与指针
指向结构体变量的指针 结构体数组与指针 链表
2020/10/5
17
指向结构体变量的指针
struct point {
pt
ppt
x
int x;
y
int y;
};
struct point pt; /*定义结构体变量*/
struct point *ppt; /*定义结构体指针*/
举例:
struct student st1= {101,"zhangsan",'M',85,69};
2020/10/5
11
结构体类型的嵌套
结构体类型中的成员也可以是结构体。
如:
struct date
struct stud
{char
name[20];
{int month; int day; int year;
2020/10/5
举例
若w中的"生日"为1963年10 月25日,如何编写相应的 语句
13
结构体数组
概念:由若干相同结构体类型的数据组成的有 序集合,叫做结构体数组。
定义形式:同基本数据类型的数组定义方法
struct 结构体类型名 结构体数组名[元素个数];
2020/10/5
14
举例
struct person { char name[9];
"zhang", 001, 95.0, 64.0 "wang", 002, 92.0, 97.0 "zhao", 003, 85.0, 78.0 "li", 004, 96.0, 88.0 "zhou", 005, 91.0, 96.0 "wu", 006, 93.0, 78.0 "lin", 007, 98.0, 97.0 "ma", 008, 89.0, 93.0 "zhen", 009, 88.0, 90.0 "yu", 010, 94.0, 90.0
ppt = &pt;
怎样通过pt访问pt的成员?
– pt.x = 0;
/*成员运算符*/
怎样通过ppt访问pt的成员?
– (*ppt).x = 0;
– ppt->x = 0; – 第二种更常用
int age; }; struct person class[10]= {"John",19,"Paul",17,"Mary",18,"Adam",16}; 能打印出字母A的语句应为:
2020/10/5
15
举例
引例: 输入10位同学的一组信息,包 括学号、姓名、数学成绩、计 算机成绩,求得每位同学的平 均分和总分,然后按照总分从 高到低排序。
构成结构体类型 的数据称为结构 体的成员,也称 元素或域
2020/10/5
5
结构体变量的定义
先定义结构体类型再定义变量名
struct student student1,student2;
在定义类型的同时定义变量
struct student {
int num; char name[20]; char sex; float shx; float jsj; float aver; float sum; } student1,student2;
int
num;
char
sex;
struct date birthday;
float
shx;
};
float
jsj;
float
aver;
float
sum;
};
2020/10/5
12
struct workers {int no; char name[20]; char sex; struct {int day; int month; int year; }bichar char float float float float
num; name[20]; sex; shx; jsj; aver; sum;
} student1,student2;
直接定义结构体变量(不出现结构体类型名)
2020/10/5
6
用户自定义类型名
关键字typedef 概念:关键字typedef用来为已经定义的数据类型
相关文档
最新文档