结构体与共用体72页PPT
- 格式:ppt
- 大小:10.72 MB
- 文档页数:72
拓展知识8-1 共用体对于结构体类型,结构体变量中的每一个成员都有各自的存储单元,C语言中还有另外一种数据类型,它当中的每一个成员数据共用一段相同的存储单元,我们把这样的数据类型称为共用体类型。
共用体类型的定义与结构体类型的定义的方式基本相同,只不过它们所使用的关键字不同,定义共用体类型所使用的关键字是union。
1.共用体类型定义的一般格式union 共用体名{数据类型成员名1;数据类型成员名2;… …… …数据类型成员名n;};说明:(1)union是定义共用体类型用的关键字,union与共用体名一起构成共用体类型标识符。
(2)共用体类型定义后,系统并不为其分配存储空间,只有定义了共用体变量后系统才为共用体变量分配相应的存储空间。
【示例1】union data{int a;double b;char c;};定义了一个共用体类型,类型名为data,它有三个成员,a是int型,b是double型,c是char型,它们共用一段存储单元。
2.共用体变量的定义共用体变量的定义与结构体变量的定义基本相同。
一是在定义共用体类型的同时定义共用体变量;二是在定义共用体类型后,用共用体类型标识符(union共用体名)定义共用体变量。
【示例2】union data{int a;double b;char c;}x,y;定义共用体类型的同时定义共用体变量x,y。
【示例2】union data{int a;double b;char c;};union data x,y[3];定义共用体类型后,用共用体类型标识符定义共用体变量x和共用体数组y[3]。
说明:(1)共用体变量定义后,在编译或程序运行时系统为共用体变量分配存储空间,共用体变量的存储长度为各成员中存储长度的最大者。
如【示例2】定义的共用体变量x的存储长度为8个字节。
(2)同样可以定义共用体数组和指向共用体变量的指针。
3.共用体变量的引用对于共用体变量,不能引用整个变量,而只能引用共用体变量中的成员。
实验9-1 结构体和共用体(1)1【实验目的】掌握结构体类型变量的定义和使用掌握结构体类型数组的概念和应用了解链表的概念和操作方法【实验要求】掌握结构体类型变量的定义和使用了解链表的概念和操作方法【实验环境】(1) Microsoft XP操作系统(2) Microsoft VC++ 6.0【实验内容】1、第几天/acmhome/problemdetail.do?&method=showdetail&id=1071描述:给定一个日期,输出这个日期是该年的第几天。
输入输入数据有多组,每组占一行,数据格式为YYYY-MM-DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
输出:对于每组输入数据,输出一行,表示该日期是该年的第几天。
样例输入:2000-01-01样例输出:12、学生成绩/JudgeOnline/problem.php?id=1518题目描述现有有N个学生的数据记录,每个记录包括学号、姓名、三科成绩。
编写一个函数input,用来输入一个学生的数据记录。
编写一个函数print,打印一个学生的数据记录。
在主函数调用这两个函数,读取N条记录输入,再按要求输出。
N<100输入:学生数量N占一行每个学生的学号、姓名、三科成绩占一行,空格分开。
输出:每个学生的学号、姓名、三科成绩占一行,逗号分开。
样例输入2a100 zhblue 70 80 90b200 newsclan 90 85 75样例输出a100,zhblue,70,80,90b200,newsclan,90,85,753、平均分和最高分/JudgeOnline/problem.php?id=1519题目描述有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩)输入:学生数量N占一行每个学生的学号、姓名、三科成绩占一行,空格分开。
一、结构体的说明及变量的定义1.结构体类型的说明由于结构体类型不是C语言提供的标准类型,为了能够使用结构体类型,必须先说明结构体类型,描述构成结构体类型的数据项(也称成员),以及各成员的类型。
其说明形式为:struct结构体名{数据类型成员1;数据类型成员n;};其中,struct是关键字,后面是结构体类型名,两者一起构成了结构体数据类型的标识符。
结构体的所有成员都必须放在一对大括号之中,每个成员的形式为:数据类型成员名;同一结构体中不同的成员不能使用相同的名字,但不同结构体类型中的成员名可以相同。
大括号后面的分号‚;‛不能省略。
如:struct person{char name[10];char sex;int age;int stature;};这里定义了一个结构体类型 person,该类型由4个成员构成。
注意:结构体类型说明中,只是描述该结构体类型的成员,说明了一种数据类型,并不分配空间。
要使用说明的结构体类型,必须定义相应的变量,才会分配空间。
2.结构体变量的定义结构体变量的定义有以下几种形式:?结构体类型的说明与定义分开。
例如说明了struct person之后,可以定义相应的变量:struct person p1, p2;定义了两个struct person变量,每个变量按结构类型中的成员分配相应的空间,每一个结构体变量所分配空间为所有成员占用空间之和。
如p1、p2所占用空间都为15byte。
?说明结构体类型的同时定义相应变量。
如:struct teacher{int number;char name[10];char sex;char profession[6];}t1, t2;在说明struct teacher类型的同时,定义了相应的两个变量t1、t2。
?直接定义结构体变量,没有结构体类型名。
如:struct{int No;char name[10];char sex;int age;}s1, s2;定义两个结构体变量s1、s2,他们都有4个成员,每个变量都占用15byte,但与第2种方式不同,没有给出结构体名,因而无法在其他地方再次使用该结构体类型定义别的变量。