第6章 数据的组织结构(二)
6.1 结构体类型
6.2 指针类型
6.3 文件
6.4 联合体与枚举类型
6.1 结构体类型
结构体类型的概念
结构体是一种可以将若干个不同数据类型的变量组
合在一起的复合型数据类型。人们常常借助于它将
表达同一对象的不同属性封装在一起,使之达到逻
辑概念与程序变量一一对应的目的,从而提高程序
的清晰度,降低程序的复杂度,改善程序的可维护
性。
结构体类型的声明
类型声明的语法格式为:
struct {
;
;
;
};
例如:
struct point_type{
int x; /*x坐标*/
int y; /*y坐标*/
};
这个结构体类型表示:point_type类型的变量将包含两个成员x 、
y ,它们分别用于存储坐标点的两个坐标值。
可以利用point_type类型声明下面这个结构体类型:
struct rectangle_type{
struct point_type lefttop; /*左上角的坐标*/
struct point_type rightbottom; /*右下角的坐标*/
};
在C语言中,允许用户为已经存在的数据类型起一
个别名,其说明格式为:
typedef 原数据类型 新数据类型名;
typedef struct point_type{
int x;
int y;
}POINT;
在这里,POINT与struct point_type完全等价
结构体变量的定义 :
利用结构体类型名定义变量的格式为:
[,[,...]];
例如:
POINT p1, p2;
等价于
struct point_type p1, p2;
与其他数据类型的变量一样,一旦定义了变量之
后,系统就会为这个变量分配相应的存储空间。
对于结构体型变量而言,系统为之分配的存储单
元数量取决于结构体所包含的成员数量以及每个
成员所属的数据类型。例如,上面定义的结构体
型变量p1包含两个int类型的成员。
结构体变量的初始化
struct ={};
例: struct point_type p = {10, 20};
struct date_type d = {2005, 5, 20};
struct rectangle_type rect = { {10, 10}, {100, 100} };
结构体变量的引用
.
结构体型变量的基本操作
1. 结构体型变量的输入
scanf(“%d%d%”, &d.year, &d.month, &d.day);
2. 结构体型变量的输出
printf(“%d %d %d”, d.year, d.month, d.day);
3. 结构体型变量的赋值
d.year = 2005;
d.month = 5;
d.day = 20;
如果一个结构体型变量已经被赋值,并且希望
将它的值赋给另外一个类型完全相同的结构体
型变量,则可以采用整体赋值的方式。
学生基本信息的组织方式