第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和指向运算符访问结构体成员

结构体类型

结构体类型

结构体类型的说明
结构体类型struct student的定义中,成员birthday是结构体类型,这就形成了结构体的嵌套。 结构体类型的定义完成后,我们就可以应用该结构体类型的变量,它的使用和int ,float等相同,如上 例中定义了struct date结构体类型,在struct student结构体定义中用到了struct date结构体类型的 变量birthday。
{ char num[10];
char name[8];
char sex[2]; struct date birthday; }; struct student stu[3]={{“000102”,“张三”,“男”,{1980,9,20}}, {“000105”,“李四”,“男”,{1980,8,15}}, {“000112”,“王五”,“女”,{1980,3,10}} }; Nhomakorabea7
结构体
3.结构体变量初始化
结构体变量的初始化
和一般变量、数组一样,结构体变量和数组也可以在定义的同时赋初值。 结构变量初始化的格式: 结构变量={初值表}
如果某成员本身又是结构类型,则该成员的初值为一个初值表。 struct student { char num[10]; char name[8]; char sex[2]; struct date birthday; }std={"000102", "张三", "男", {1980,9,20}};
12
结构体
通过指针变量引用结构体成员的注意事项 struct {int a;char*s;}x,*p=&x; 且变量x的成员a、指针成员s已正确赋值,则如下表达式
结构体变量的引用

9.结构体

9.结构体

对结构体变量初始化. 例 对结构体变量初始化 #include <stdio.h> void main() () {struct student { int num; ; char name[20]; char sex; ; char addr[20]; ;
运行结果: 运行结果: No.:10101 : name:LiLin : sex:M :M address:123 Beijing Road :
}a={10101,〃LiLin〃,′M′,〃123 Beijing Road〃}; , , , };
/* 对结构体变量 赋初值 对结构体变量a赋初值 赋初值*/ printf(〃No.:%d\nname:%s\nsex:%c\naddress:%s\n〃, , a.num,,a.sex,a.addr); , , , }
例 struct student { int num; char name[20]; char sex; int age; char addr[30]; }; struct student stu1={112,"Wang Lin",'M',19, "200 Beijing Road"};
形式二:(用的最多)
num 2字节
… …..
name sex age score
20字节 1字节 2字节 4字节
addr
30字节
(2)在声明类型的同时定义变量 (2)在声明类型的同时定义变量 这种形式的定义的一般形式为: 这种形式的定义的一般形式为: struct 结构体名 { 成员表列 变量名表列; }变量名表列;
* Num/ name sex age Month §图11-3 day year

C语言程序设计 Chapter8 结构体与共用体

C语言程序设计 Chapter8 结构体与共用体

struct date_type { int year; 结构体数组 int month; int day; 结构体数组的定义 }; ; struct stud_type { char name[10]; long num; char sex; struct date_type birthday; float score; char address[10]; }s1[3]; struct stud_type s2[5];
struct ym_type { 输入一个职工的工资信息, 例. 输入一个职工的工资信息,整体 int y; 赋值给另一个变量,在屏幕上输出。 赋值给另一个变量,在屏幕上输出。 int m; }; struct salary_type { char num[5]; char name[17]; struct ym_type ym; float salary; float other; float cost; };
#define N 5
char name[11]; int score; }t,s[N]; main() { /*输入基本信息 输入基本信息*/ 输入基本信息 /*选择排序成绩 选择排序成绩*/ 选择排序成绩 /*输出基本信息 输出基本信息*/ 输出基本信息 }
/*选择排序成绩 选择排序成绩*/ 选择排序成绩 for(i=0;i<N-1;i++) { k=i; for(j=i+1;j<N;j++) if(s[k].score<s[j].score) k=j; if(k!=i) { t=s[i]; s[i]=s[k]; s[k]=t; } }
第8章 结构体与共用体
概述
在事务处理中,常需要将一些关系密切但 在事务处理中 常需要将一些关系密切但类型不同的 并为其取一个整体名字, 数据项组织在一起,并为其取一个整体名字,形成一 并为其取一个整体名字 个结构。 语言中,就称其为 个结构。 语言中 就称其为结构体。 C语言中 结构体通常由不同数据类型的数据项(成员)组成 组成 一个结构体可包含若干成员,每个成员具有自己 一个结构体可包含若干成员 每个成员具有自己 的名字及数据类型。 的名字及数据类型。

《C语言结构体》课件

《C语言结构体》课件
练习题:设计一个储蓄账户 (Account)结构体,包含账户名、 账户号码、余额等信息
设计一个储蓄账户(Account)结构体, 包含账户名、账户号码、余额等信息, 以便更方便地管理用户的银行账户。
结构体的应用
在函数中传递结构体
可以将结构体作为参数传递给函数,以实现更复 杂的程序功能。
结构体的输入输出
4
结构体指针
结构体指针可以指向一个结构体变量,并可以通过它来操作结构体的成员。
结构体高级部分
结构体嵌套
可以在结构体中定义另一个结构体,以实现更复杂 的数据结构。
联合体(union)
联合体是一种特殊的结构体,在同一块内存中存储 多个不同类型的数据。
枚举(enum)
枚举是一种描述变量的表示方法,通过固定的名称 和数值将变量的值表示为一组符号。
可以使用标准输入输出函数对结构体进行输入输 出。
在结构体中定义函数指针
可以在结构体中定义函数指针,以实现更灵活的 程序设计。
嵌套结构体的输入输出
可以使用标准输入输出函数对嵌套结构体进行输 入输出。
总结
• 结构体是提高程序可读性和可维护性的关键概念。 • 结构体的定义和操作是理解结构体的核心。 • 结构体的高级部分包括嵌套、联合体、枚举和位域。 • 结构体的应用包括结构体在函数中的传递、在结构体中定义函数指针以及结构体的输入输出。 • 结构体的实例和练习题可以帮助读者更好地掌握结构体的概念和使用。
结构体变量的定义
结构体定义了一种数据类型,在程序中,可以根据定义的结构体创建对应的结构体变量。
结构体操作
1
结构体的初始化
在定义结构体变量时,可以使用初始化列表为其成员变量指定初始值。
2
结构体的赋值

8 岩体的力学性质

8 岩体的力学性质
V
式中:d — 钻孔孔径 ,р— 计算压力,等于实验压力与初 始压力之差,Mpa;V — 径向位移,cm。
(3) 岩体变形曲线类型 由于岩体中结构面的发育情况及岩石坚硬程度等的差异, 岩体变形试验求得的压力P — 变形W曲线是复杂多变的。总括 起来,可归纳为如图所示的三类。 1.直线型:如图P—W曲线呈近似直线关系,反映岩体坚硬、致 密,裂隙不发育,或只有分布均匀的细小裂隙,岩体变形模量 较大,塑性变形小。 2.上凹型:P—W曲线在载荷低时斜率小,塑性变形大,随着载 荷的加大,曲线斜率逐渐增大,塑性变形趋于稳定;反映岩体 的岩性坚硬,裂隙发育,且多呈张开而无充填;在载荷作用下, 裂隙逐渐闭合或发生镶嵌作用而被挤紧。 3.下凹型:P—W曲线在低载荷下近似直线,表现为弹性变形; 当载荷增大时呈曲线,表现为塑性变形;反映岩体的岩性较软 弱,或岩体的较深部位埋藏有软弱夹层,或岩体裂隙发育,且 有泥质充填。
(2)构造结构面
各类岩体在构造运动作用下形成的各种结构面,如劈理、节理、 断层、层间错动面等。 节理面在走向延展及纵深发展上,其范围都是有限的,大者 一般不过上百米,小者仅有几厘米.张节理面一般粗糙,参差 不齐,宽窄不一,延展性较差,剪节理面一般平直光滑,延展 性相对较好,节理面上常见有擦痕和各种泥质薄膜,如高岭石、 绿泥石、滑石等,因此,剪节理面尽管接触紧密,但却易于滑 动。 断层面的规模相差比较悬殊,有的深切岩石圈几十公里,有 的仅限于地壳表层或只在地表数十米.但是,相对工程而言, 断层面一般是延展性较好的结构面.断层面(或帘)的物质成分 主要是构造岩,如断层泥、糜棱岩、角砾岩、压碎岩等.层间 错动带是在层状岩体中常见的一种构造结构面,其产状一般与 岩层一致。 延展性较好,结构面中的物质,因受构造错动的影响,多呈 破碎状、鳞片状,且含泥质物。

C语言 第八章 结构体

C语言 第八章 结构体

共用体
3)直接定义联合变量 union {
int i;
float f; }num; 说明:(1)共用体变量的所有成员占有同一段内存,所占内存空 间是其成员中字节数最大的成员占有的字节数。
(2)共用体变量中可以定义许多不同类型的成员,但同一时刻只
有一个成员的数据有效。
共用体
4.共用体变量初始化 初始化时,只能对第一个成员的数据类型初始化。 例:union data num={10}; 正确 union data num={10,25.4}; 错误
结构体变量
方法三:定义结构体类型的同时定义结构体变量,省略结构体类型名
struct DATE{ int year; int month; int day;}; struct {
long int number;
char name[8]; int age;
char *sex;
struct DATE birthday; }stu1,stu2;
数据类型
数据类型
成员名1;
成员名2;
//成员表
……
};
结构体类型
2.结构体类型的定义: 说明: (1) struct是关键字,标识一个结构体类型定义的开头 (2)“结构体类型名”是表示该结构体类型的名称的标识符,可
类比int、char
(3)“成员表”是构成结构体类型的成份,由一个或多个成员构
成,每个成员有自己的成员名。各成员数据类型可以不同,既可以
枚举类型
3.枚举变量定义
方式一:类型和变量分开定义 enum WEEKDAY{Sun,Mon,Tue,Wed,Thu,Fri,Sat};//定义枚举类型 enum WEEKDAY w;//定义枚举变量w

C语言构造类型

C语言构造类型

8.1 概述
C语言提供了自定义数据类型的方法,通过 自定义类型将不同类型的数据组合成一个 有机的整体,这些数据在一个整体中是互 相联系的。 这种自定义的数据类型叫构造类型。 实际上在前面已经学习了一种构造类型—— 数组,数组是具有相同数据类型的一组元 素集合。除了数组之外还有结构体、共用 体。
8.2 结构体
8.8 链表
建立动态链表的步骤如下:
第一步:定义一个头指针head并指向NULL。
第二步:开辟新结点,并使p1,p2指向它,然后输 入一个学生数据给新结点,并使指针域指向 NULL。
Байду номын сангаас 8.8 链表
第三步:由于p1->num!=0,所以再开辟一个新结 点,并使p1指向新结点,然后输入一个学生数 据给新结点,并使指针域指向NULL。
8.4 结构体变量的引用
引用结构体变量要遵守如下规则:
(1)不能将一个结构体变量作为一个整体进行输 入输出(引用),而只能对结构体变量中的各 个成员分别进行输入和输出(引用)。
结构体变量成员引用格式:
返 回
“.”是成员(又叫分量)运算符,它的优先级最
高。例如 stu1.num=10001;
8.4 结构体变量的引用
关于结构体类型说明 :
①类型与变量是两个不同的概念,不能混淆。变 量分配内存空间,类型不分配空间。
②对结构体中的成员可以单独使用,相当于普通 变量,引用方法后面具体讲述。 ③结构体中成员也可以是一个结构体变量。
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类型*/ char addr[30]; }stu1,stu2;

软件技术基础之指针和结构体课件ppt课件

软件技术基础之指针和结构体课件ppt课件


从右图可知,指 针变量和一般变量一 指针变量pi 变量地址(指针)
量 地 址
样,仅仅是变量旳内




容为变量地址旳变量
变量i
变量值

而已。这里变量和指针变量旳类型必须一致。
针 变

一般而言,指针变量只能存储某一种数据类型旳 变量旳地址,由此可将指针变量分为:整型指针变量、 实型指针变量和字符型指针变量等等,指针变量旳类 型表白了其指向旳存储单元中存储旳数据旳类型。
另一种引用旳形式: 构 造指针变量名 组员名 定义:struct data * today; today 为指向该构造旳指针
可见,“”和“·”操作符分别使用在用指向构造旳 指针和用构造变量来访问构造中旳数据项(组员)时。
例:构造例程。
结 构 体小结
构造体是C语言中旳一种复杂(构造)类型,它是一种 被命名为一种标识符旳多种变量旳集合。构造旳定义拟定了 构造变量或构造指针旳格式,构造是软件设计中实现数据抽 象旳基础。
3、程序中一旦定义了一种变量,该变量在内存中就将 占用一定旳存储单元。变量占用旳存储单元总是n(n>0) 个连续旳字节,开始字节旳地址,就是变量旳地址也可 称为该存储单元旳首地址。
二、指针旳基本概念:
指针就是变量旳地址。与此相应,在C语言中使
用一类专门旳变量即指针变量来存储变量旳地址。
所以,指针变量是存储地址数据旳变量。
四、指针旳“&”、“*”和赋值运算:
1 、& 取地址运算和 * 引用运算 取地址运算符&旳作用是取变量旳地址。如:
& i 表达求变量 i 旳地址。 引用运算符 * 旳作用是取指针指向变量旳内容。
  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用来为已经定义的数据类型
相关文档
最新文档