《二级C语言程序设计》第9章结构体与共用体
C语言程序设计教案 结构体与共用体
printf(“No.
name
sex
age\n”);
for(p=stu;p<stu+3;p++)
printf(“%5d%-20s%2c%4d\n”,p->num,p->name,
p->sex,p->age);}
三、用指针处理链表
链表是一种常见的数据结构,是动态地进行存储分配的一种结构。
用数组存放数据时,必须事先定义固定的长度。比如有的班级有
例 对候选人得票的统计程序。设有三个候选人,每次输入一个得 票的候选人的名字,要求最后输出各人得票结果。
程序如下: #include <stdio.h> struct person {char name[20];
int count; }leader[3]={“li”,0,“zhang”,0,“fun”,0}; main() {int i,j;char leader_name[20]; for(i=1;i<=10;i++) {scanf(“%s”, leader_name);
┄ char addr[30]; }; Struct student student[10];
2.结构体数组的初始化 其初始化和数组的初始化相似。 3.结构体数组的应用举例
结构体数组 和数值型数 组不同之处 在于每个数 组元素都是 一个结构体 类型的数据。
定义了一个 student,其 元素为 Struct student 类型 数据,数组中 有 10 个元素。
{ int month;
先声明一个
int day; int year; }
Struct date 类型,然后在 Struct
C程序设计 第9章 结构型与共用型
上一页
返回
9.2 共用型
9.2.1共用型与共用型的定义
共用型和结构型类似,也是一种由用户自己定义的数据类型, 也可以由若干种数据类型组合而成,组成共用型数据的若干 数据也称为成员。和结构型不同的是,共用型数据中所有成 员占用相同的内存空间(以击要内存空间最大的成员的要求为 准)。设置这种数据类型的主要目的就是节省内存。 共用型击要用户在程序中自己定义,然后才能用这种数据类 型来定义相应的变量、数组、指针等。
上一页
下一页
返回
9.1 结构型
9.1.4结构型数组的定义
数组的元素也可以是结构型的,因此可以构成结构型数组。 结构型数组的每一个元素都具有相同结构型。在实际应用中, 经常用结构型数组来表小具有相同数据结构的一个群体,如 一个班的学生档案,一个车间的职工工资表等。定义方法和 结构型变量相似,只说明它为数组类型即可。
C语言不仅提供了丰富的数据类型,而目还允许用户用类型 定义符typedef定义类型说明符,也就是说允许用户为数据 类型取“别名”。 用typedef定义数组、指针、结构型等类型将带来很大的方 便,不仅使程序书写简单,而目使意义更为明确,因而增强 了可读性。 typedef 原类型名 新类型名 其中,新类型名一般用大写表示,以便于区别。 虽然也可用宏定义来代替typedef的功能,但是宏定义是由 编译预处理完成的,而用typedef定义类型是在编译时完成 的,后者更为灵活方便。
上一页
下一页
返回
9.2 共用型
9.2.2共用型变量的定义和使用
1.共用型变量的定义 共用型变量的定义与结构型变量定义相似,包括3种形式: ①union共用型名变量名表; ② union共用型名 成员表; 变量名表; ③union 成员表; 变量名表;
C程序设计第九章结构体与共用体
则p为结构指针变量,它可用来存放student型变 量的地址 x1 p name 令 p=&x1; sex age 则 p为x1的首地址. score addr 访问结构成员: pname 表示x1的姓名; pname 等价于 (*p).name
page
表示x1的年令; page
等价于 (*p).age
a structure is a collection of variables that are referenced under one name, providing a convenient means of keeping related information together. called aggregate data types because they consist of several different, yet logically connected, variables. also referred to as compound or conglomerate data types, for the same reason. user-defined types
9.5 结构体数组
结构体数组的定义
三种形式:
形式一: struct student 形式二: { int num; struct student 形式三: char name[20]; { int num; struct char sex; char name[20]; { int num; int sex; charage; }; char name[20]; int age; char sex; struct student stu[2]; }stu[2]; int age; }stu[2];
工作手册式C语言程序设计(第2版)课件 项目9 结构体与共用体
6
2 培养学生独立思考的能力。
任务3 师生信息统计
1. 共用体类型的含义
2. 共用体变量的定义
9.1 单个学生信息及成绩统计
9.1.1 结构体类型的定义
项目9 结构体与共用 体
结构体属于构造类型,其由若干个成员组成,成员的类型既可以是基本数据类型,也可以是构造类型,而且可以 互不相同。
结构体遵循“先定义后使用”的原则,其定义包含两个方面,一是定义结构体类型;二是定义该结构体类型的变 量。如平时所说的学生,它是一个群体的类型,而具体的张三、李四等对应学生类的某个对象,可将它的数据赋值给 学生类的相关变量。
9.3 师生信息统计
项目9 结构体与共用 体
【 例 9.5】编写程序引用共用体变o.h>
union data { int x;
char z;
};
int main( ) { union data d1;
d1.x=8;
d1.z="a";
printf("d1.x=%d\n",d1.x);
项目9 结构体与共用 体
3. 直接定义结构体变量 struct { 数据类型成员名1;
数据类型成员名2; …… 数据类型成员名n; }结构体变量; 例如: struct { int sno; char name[10]; char classname[20]; float grade[5]; }stu1; 小提示:采用这种方式定义的结构体没有类型名 称,会影响在后面的程序中定义同类型的变量。
结构体与共用体
4、共用体类型的变量如何赋初值,含义是什么?
不能对共用体变量名赋值,也不能在定义共用体变量时初始化。但可以用一个共用体变量为 另一个变量赋值
例:union
{ int i;
char ch;
double f;
}a={1,’a’,1.5}; ()
a=1;
()
m=a;
()
例:float x; union { int i; char ch; double f; }a,b; a.i=1; a.ch=‘a’; a.f=1.5; b=a; () x=a.f; ()
二. 枚举类型的应用
• 1.枚举类型变量的定义 ◆先定义枚举类型,再定义枚举类型变量
enum week{sun,mon,tue,wed,thu,fri,
sat};
enum week weekday,workday; ◆定义枚举类型的同时定义枚举变量 enum color {red,blue,green,black}a,b,c;
共用体类型的关键字
union 联合类型名 { 数据类型 成员名1 数据类型 成员名2
...........
数据类型 成员名n };
例:
union utype {
char ch; int i; float f; };
2、如何定义共用体类型的变量
(1)先定义类型,再定义变量,例如: union data /*共用体类型定义*/ { int i;
◆直接定义枚举变量 enum {male,female}sex1,sex2;
枚举类型变量的特点
例 enum DAY {
MON=1, TUE, WED, THU, FRI, SAT, SUN };
(1) 枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开。
C语言第9章结构体、共用体、枚举
结构体变量.成员
struct date { int year;
int month; int day;
“.”是成员运算符, 优先级最高
printf("%d,%d,%d",birth);
printf("%d,%d,%d",birth.year,
}; struct date birth;
birth.month,birth.day);
scanf("%f",&student2.score[2])7; 8
student2
结构变量的整体赋值 student3 = student2;
02 Zhang Zi Liang 88 78
student3
02 Zhang Zi Liang 88 78
湖南工业大学计算机与通信学院
例9-1学生的基本信息包括学号、姓名、3门成绩、平均分、总分。输入一 个学生的前3项基本信息,计算平均分和总分并输出。
湖南工业大学计算机与通信学院
9.1 问题的提出
又如,在学生信息管理系统中填 加个属性:是否是中共党员,如 果不是属性的值为0(int),如
果是属性的值为入党的时间 (char)。在某一时间,属性只有 一种值,而且数据类型不同,这 种情况用什么数据类型描述呢?
对于这种应用,C语言引入了共用体类型。
共用体是一种同一存储区域由不同类型变量共享的数据 类型,它提供—种方法能在同一存储区中操作不同类型 的数据,也就是说共用体采用的是覆盖存储技术,准许 不同类型数据互相覆盖。
基本数据类型并不能方便地解决所有问题
❖ 复合数据类型是基本数据类型迭代派生而来
典型的代表就是“结构”,数组、指针也可算作此类
《C语言程序设计与数据结构》课件第09章结构体与共用体
C语言程序设计与数据结构
C编译程序按照每个成员在结构体中声明的顺 序一一对应赋值,不可以跳过前面的成员直接给后 面的成员赋值,但是可以只给前面若干成员赋值, 后面没有赋值的成员由系统赋予默认值。
C语言程序设计与数据结构
3.结构体变量的引用 (1) 一般结构体变量的引用 一般结构体变量的引用是通过成员运算符“.”来实 现的,形式如下: 结构体变量名.成员名
学习重点: 结构体的概念; 结构体成员的引用。
C语言程序设计与数据结构
结构体概念的引入 (为什么需要结构体?)
C语言程序设计与数据结构
已经学习过的数据类型: 整形、实型、字符型 ,另外还有数组。 问题: 以上数据类型和数组是否完全满足编程需要? (例如:如何定义一个工人变量?)
C语言程序设计与数据结构
C语言程序设计与数据结构
上述五个数据项组成了工人的整体,这就是一 个结构体类型的数据,我们可以给这个数据命名为 worker,只要是worker类型的数据,都包括这五个 数据项。
C语言程序设计与数据结构
9.1 结构体类型的说明
C语言程序设计与数据结构
结构体类型是包含若干个相同或不同数据类型数 据项的集合,我们把这些数据项称之为结构体成员, 声明结构体类型的一般形式为: struct 结构体标识名 { 数据类型名1 结构体成员名表1; 数据类型名2 结构体成员名表2; ..... 数据类型名n 结构体成员名表n; };
C语言程序设计与数据结构
与同一类型的普通变量一样,结构体变量中的各个成 员也可以进行相应的各种运算,如: worker1.sex =„F‟; worker1. age++; worker1.salary=3000f;
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语言 结构体与共同体
第九章结构体和共用体【本章要求】1、结构体类型的定义方法和数据的引用,尤其是结构体成员中含有数组的用法2、访问通过结构体类型建立的单链表,并对链表中的结点进行插入、删除操作3、共用体类型的定义和引用,尤其是队成员的覆盖赋值方式。
9.1 结构体9.1.1概念结构体是一种构造数据类型,用于把不同类型的数据组合成一个自定义的数据类型。
9.1.2结构体类型定义结构类型定义的一般形式是:struct <结构类型名>{ <成员类型标识符><空格><成员名表列>;<成员类型标识符><空格><成员名表列>;<成员类型标识符><空格><成员名表列>;} [<变量名列表>];【说明】1、struct是关键字,不能省略2、<结构类型名>为合法标识符,但可省略(即无名结构体)3、<成员名表列>是由一个或多个成员名(又称为成员变量)组成,当成员名不止一个时,用逗号分隔。
4、结构可由多个成员名组成,成员名可以是由<成员类型标识符>确定的相同的或不同的数据类型,可以是基本类型或构造类型。
5、<变量名列表>可为空。
举例说明:struct student {int num;char name[20];char sex;int age;float score;char addr[30];};【说明】namenumsexagescoreaddr2字节2字节20字节1字节4字节30字节……..- 113 -《C 语言程序设计》- 114 - 1、结构体类型定义的作用域取决于其定义位置2、结构体类型定义仅仅描述结构的组织形式,并不分配内存。
9.2 结构体变量9.2.1结构体变量的定义一、方式一先定义结构体类型,再定义结构体变量。
举例说明如下:1、一般形式:struct student stu1, stu2;2、若有宏定义:#define STUDENT struct student则可为:STUDENT stu1, stu2; 二、方式二定义结构体类型的同时定义结构体变量。
C语言程序设计——结构体和共用体(完整版)
printf(“name\tage\tjob\tclass/office\n”); for(i=0;i<PN;i++) {if(body[i].job==„s‟) printf(“%s\t%d\t%3c\t%d\n”,body[i].name, body[i].age,body[i].job,body[i].units.class); else printf(“%s\t%d\t%3c\t%s\n”,body[i].name, body[i].age,body[i].job,body[i].units.office); } }
birthday num name sex age month day year addr
§12.3结构体数组
结构体数组的每一个元素都是具有相同结构类型 的结构体变量。 例:struct student {int num; char name[20]; float score; }stu[3]; 其中,定义了一个结构体数组stu,共有3个元素, 每个元素都具有struct student的结构形式。
§12.6共用体
共用体(也称为联合)也是一种构造的数据类型。 共用体是将不同类型的数据组织在一起共同占用 同一段内存的一种构造数据类型。 例如,在校学生和教师都填写以下表格: 姓名 年龄 职业 单位 其中,职业分两类:教师和学生; 而单位一栏里,学生填写班级编号(整型类型), 教师填写某系某教研室(整型类型) 。
§12.7枚举数据类型
当某些变量仅由有限个数据值组成时,通常用枚 举类型来表示。 所谓枚举是指将变量的值一一列举出来,变量的 值只限于列举出来的值的范围内。如一周只有7天, 一年只有12个月等等。
注意:枚举类型是一种基本数据类型,而不是一 种构造类型。关键字为enum。
C语言程序设计(第二版) 第9章结构体和共用体
9.2 结构体与结构体类型变量
9.2.1 结构体类型的定义
}; 声明一个结构体类型的一般形式为: struct 结构体名 { 成员列表 }; 【例9.1】 如果通讯地址表由下面的项目构成:
char email[30];
/*E-mail*/
E-mail 姓名 部门 家庭住址 邮编 电话号码 (字符串) (字符串) (字符串) (长整型) (长整型) (字符串)
(1)先定义结构体类型再定义结构体变量。 应当定义结构体类型的变量,并在其中存放具体的数 一般形式为: struct student struct student struct 结构名 据。定义方法有以下三种: { { { int num; int num; 结构体成员表列 char name[20]; char name[20]; }变量名表列; float score; float score; } boy1,boy2; }; struct student boy1,boy2; (3)直接定义结构体类型变量。 struct { 一般形式为: int num; struct char name[20]; { float scorce; 结构体成员表列 } boy1,boy2; } 变量名表列;
9.1 概述
在实际应用中,人们经常需要将不同类型的数 据作为一个整体来处理。
比如:要描述一个学生信息。
学号 姓名 (长整型) (字符串) 年龄 (整型) 性别 身份证号 家庭住址 (字符型) (长整型) (字符串)
struct student { long num; struct addr 在 C 语言中,结构体是不同数据类型的集合。 char name[20]; { int age; 在使用结构体这种数据类型之前,必须要先对其进 char name[20]; /*姓名*/ char sex; char department[30]; /*部门*/ 行定义,对结构体的定义包括结构体类型和结构体 long certificate; char address[30]; /*家庭住址*/ char address[40]; 变量的定义两部分。 long box; /*邮编*/ }; long phone; /*电话号码*/
C语言程序设计实例教程第2版习题答案作者李红第9章结构体和共用体.doc
9.4课后习题9.4.1项目练习一.练习目的1.进一步巩固结构体类型和共用体类型的定义与引川2.进一步复习链表的建立过程3.进一步巩固枚举类型的定义与枚举元索的引用方法二.练习内容1.用结构体变量表示平面上的一个点(横坐标和纵坐标),输入两个点,求两点Z间的距离。
#include "stdio.h"include "math.h"struct pin{float x;float y;}a,b;main(){printfC*请输入a点的横纵坐标:“);scanf("%f%f"/&a.x,&a.y);printfC'Xn");printf("请输入b点的横纵坐标scanf(,,%f%f"/&b.x,&b.y);printf("\n n);printff"输出a、b 两点之间的距离是:%f",sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)));getch();}2.16个同学围成一-圈,从笫1个人开始按1、2、3的顺序报号,凡报到3者退出圈子。
找出最后昭在圈子中的人原来的序号。
ttinclude "stdio.h"#include "stdlib.h"#define LEN sizeof(struct game)struct game{int num;struct game *next;};struct game *creat(){ struct game *head,*p;head=p=(struct game *) malloc(LEN);p->num=l;int i=2;while(i<=16){ p・>next=(struct game *) malloc(LEN);p->next-:>nu m=i;i++;p=p->n ext; }p->next=head; return(head);} struct game *delete(struct game *head) { struct game*pl=head,*p2=head,*x; int k=l;while(pl->next!=pl) {if(k==3) {x=pl; pl=pl->next;p2・>n ext=pl; free(x); x=NULL; k=0;} else {P2=pl; pl=pl->next;}pl->next=NULL;return(pl);}void print(struct game *head){ struct game *p;p=head;while(p!=NULL) {printf("%d\t",p->num);p=p->n ext;}printfCAn");}main(){ struct game *pt,*p;pt=creat();p=delete(pt);print(p);free(p);getch();}3.建立一个链表,每个结点包含的成员为:职工号、工资。
C语言--第九章 结构体与共用体
free(pa);
h
19
3. 链表 链表概念:同一类型的结构体变量连接到一起,构成一个链, 各个结构体变量即为链表中的结点。 (1) 静态链表 所有结点都是在程序中定义的,不是临时开辟的,也不能用完后 释放,这种链表称为”静态链表”. 例如:
struct link
{
char ch;
struct link *p;
/* bk[0] bk[1] 3. 结构体指针初始化
bk[2] */
结构体类型数据的指针与其它类型数据的指针初始化相同
例如:struct stu
std,pers[3],*psd1=&std,*psd2=pers,(*p)[3]=&pers;
h
6
9.1.4 结构体类型数据的引用
1. 结构体成员的引用 若已定义了一个结构体变量和该类型的指针变量,并且该指针
p=&t; f(p); } 程序运行结果为:
C language 85
h
13
4. 结构体类型的函数 例9.5 找出成绩最高的学生记录,学生记录由学号和成绩组 成。
#include “stdio.h”
#define N 5
struct stu
{
char num[5];
float s;
};
struct stu fun(struct stu a[])
f(t); } 程序运行结果为:
C language 85
h
12
3. 传递结构体地址 形参结构体指针变量=实参结构体指针
例9.4 #include “stdio.h” struct ST
{ char str[20];int i;}; void f(struct ST *x) { printf(“%s\n%d\n”,x->str,x->i);} main() { struct ST t={“C language”,85},*p;
C语言课件—第9章 结构体和共用体
✎ 【案例3】-案例描述
一个小组中有3个学生,每个学生有3门课程的成绩需要统计。案例 要求通过编程依次输入学生的学号、姓名和三门课程的成绩,计算出平 均成绩并依次把每个学生的学号、姓名和平均成绩打印在屏幕上。
✎ 【案例3】-案例分析
很显然,用刚刚学过的结构体存放学生的信息是最好的选择。一个 结构体变量可以存储一组数据,如一个学生的学号、姓名和成绩等。但 是本案例中有3个学生的信息需要存储,因此需要采用结构体数组。与 前面讲解的数组不同,结构体数组中的每个元素都是结构体类型的,它 们都具有若干个成员项。接下来将针对结构体数组的定义、引用及初始 化方式进行讲解。
1. 结构体的每个成员变量相对于结构体首地址的偏移量,是该成 员变量的基本数据类型(不包括结构体、数组等)大小的整数 倍,如果不够,编译器会在成员之间加上填充字节。
2. 结构体的总大小为结构体最宽基本类型成员大小的整数倍,如 果不够,编译器会在最末一个成员之后加上填充字节。
✎ 【案例1】-必备知识
✎ 【案例3】-必备知识
• 结构体数组的初始化
− 结构体数组的初始化方式与数组类似,都是通过为元素赋值的方式完 成的。由于结构体数组中的每个元素都是一个结构体变量,因此,在 为每个元素赋值的时候,需要将其成员的值依次放到一对大括号中。
1.先定义结构体数组类型,再初始化结构体数组 2.在定义结构体数组的同时,对结构体数组初始化
✎ 【案例2】-案例描述
此案例是对案例1的补充,案例1中使用结构体变量存储了小明的学 号、姓名、年龄和身高等信息,此案例要求用两种方法把小明的基本 信息输出到屏幕上。
✎ 【案例2】-案例分析
实现本案例有两种方法。第一种方法是:在引用各成员时,结构体 变量使用成员运算符“.”访问成员。另一种方法将用到一个新的知识 ,即结构体指针。顾名思义,指针指向结构体,它的用法与一般指针 没有太大差异。它使用指向运算符“->”访问结构体内各成员。接下 来将围绕结构体指针变量进行详细讲解。
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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
9.1.4 结构体变量的初始化
结构体变量的初始化形式有如下两种:
(1)struct 标识符
{
类型名1 成员名1;
类型名2 成员名2; … 类型名n 成员名n; }变量名={数据表};
例1:struct student { int num;
char name[20]; char sex; int age; char addr[30]; } a={060001, "Li Fang", 'F',18, "Wuhan"};
struct student a,b; ="Li Fang"; 《b二. 级bCi语r言t体h程与d序共a设用y计体.》d第a9章y结=构12;
9.1.3 结构体变量的引用
对结构体变量中的成员都可以像同类型的普通变量一样进 行各种运算。
例3:a. num=060001+5; b. birthday.day++; (2)结构体变量作为一个整体引用.结构体变量不可以作
Zhang Xia F 17 Shanghai
上表中某一学生的数据是由学生的学号、姓名、性别、年龄、家庭地址等数据项组 成的,这些数据项是一组逻辑上相关的数据,如果将这些数据项分割开来孤立地考 虑它们的属性,将导致操作的不便或逻辑错误。在C语言中,将这种由多个不同类 型的数据项组合在一起形成的数《据二级类C型语言,程称序为设结计》构第体9章类结型构。
《二级C语言程序设计》第9章结构 体与共用体
9.1.3 结构体变量的引用
(2)结构体类型名 变量名={数据表}; 例2:struct student { int num;
char name[20]; char sex; int age; char addr[30]; }; struct student a={060001, "Li Fang", 'F',18, "Wuhan"};
(1)引用结构体变量的成员。
格式: 结构体变量名·成员名
struct date { int year; int month; int day; };
struct student {
int num; char name[20]; char sex; struct date birthday; char addr[30]; };
① 先定义date结构体: ② 再定义student结构体:
struct date
struct student
{int year;
{
int month;
int num;
int day;
char name[20];
};
char sex;
struct date birthday;
char addr[30];
第9章 结构体与共用体
9.1 结构体
num 060001 060230 060212 061122 060536
表9-1 学生表
name Sex age
addr
Li Fang F 18 Wuhan
Lin Hong F 16 Changsha
Wu Qiang M 18 Beijing
Li Jun
M 17 Zhengzhou
}; 《二级C语言程序设计》第9章结构
体与共用体
9.1.2 结构体变量的定义
结构体变量的定义有三种处理方式:
(1)先定义结构体类型,再定义结构体变量。
例1:struct student
{
int num;
char name[20];
char sex;
int age;
char addr[30];
};
/*定义结构体类型struct student */
体与共用体
9.1.1 结构体类型的定义
结构体类型定义的一般形式: struct 标识符 {
类型名1 成员名1; 类型名2 成员名2; … 类型名n 成员名n; };
《二级C语言程序设计》第9章结构 体与共用体
9.1.1 结构体类型的定义
例1 对某一学生数据(由学生的学号、姓名、性别、年龄、 家庭地址等数据项组成)的结构体类型定义如下:
《二级C语言程序设计》第9章结构 体与共用体
9.2 结构体数组
9.2.1 结构体数组的定义
结构体数组定义的一般形式:
结构体类型名 数组名[常量表达式];
例1:struct student
{
int num;
为整体进行输入输出,但可以作为函数的参数或返回值 而被整体引用,也可以将一个结构体变量作为一个整体 赋给另一个具有相同类型的结构体变量。 例1:struct student a,b; … a=b;
《二级C语言程序设计》第9章结构 体与共用体
9.1.3 结构体变量的引用
(3)引用结构体变量的地址或成员的地址 struct student a,b; scanf("%d",&a.num); printf("%x",&a.num); printf("%x",&a);
struct student a,b;
/*定义a、b为结构体类型struct student的变量*/
《二级C语言程序设计》第9章结构 体与共用体
9.1.2 结构体变量的定义
(2)在定义结构体类型的同时定义结构体变量。 例2:struct student {
int num; char name[20]; char sex; int age; char addr[30]; } a,b;
《二级C语言程序设计》第9章结构 体与共用体
9.1.2 结构体变量的定义
(3)直接定义结构类型变量。 例3:struct {
int num; char name[20]; char sex; int age; char addr[30]; } a,b;
《二级C语言程序设计》第9章结构 nt {
int num; char name[20]; char sex; int age; char addr[30]; };
《二级C语言程序设计》第9章结构 体与共用体
9.1.1 结构体类型的定义
(5)结构体类型定义的嵌套。
例2:若某一学生数据包括学号、姓名、性别、出生年月、 家庭地址,其中出生年月包括出生的年、月、日三个 数据,则对某一学生数据的结构体类型定义如下: