C语言程序设计第九章 常用数据结构 下载本文

内容发布更新时间 : 2024/5/3 1:15:05星期一 下面是文章的全部内容请认真阅读。

第九章 常用数据结构

【学习目标】

本章将介绍在C语言中如何管理内存。学习要点包括如下几点: (1)了解内存组织方式。 (2)能区分堆和栈的不同。 (3)会使用动态管理内存函数。 【学习导航】

本章的在整个课程中的位置如图10-1所示。

图9-1 本章学习导航

9.1 结构体

前面的课程我们学习了一些简单数据类型(整型、实型、字符型)的定义和应用,还学

习了数组(一维、二维)的定义和应用,这些数据类型的特点是:当定义某一特定数据类型, 就限定该类型变量的存储特性和取值范围。对简单数据类型来说,既可以定义单个的变量, 也可以定义数组。而数组的全部元素都具有相同的数据类型,或者说是相同数据类型的一个 集合。

在学生成绩管理系统中,记录一个学生会涉及到多个数据,比如学生的姓名、性别、年龄、成绩等等。下面的程序描述了一个姓名叫“罗杰”的学生的基本信息。 1 2 3 4 5 6 7 8

#include

int main() {

char name[20] = \罗杰\姓名

char sex = '1'; //性别 1:男, 2:女 int age = 20; //年龄 float score =85; //成绩

return 0 ;

9 10 11 }

如果有多个学生的信息需要描述呢,那么就需要定义和上面代码中第5行~第8行类似的很多变量,这样会出现很多变量声明;另一个问题就是这些声明的变量彼此之间看起来并无直接关联,无法从一个“整体”的角度来描述学生。所以C语言引入一种能集中不同数据类型于一体的数据类型—结构体类型。结构体类型的变量可以拥有不同数据类型的成员,是不同数据类型成员的集合。

9.1.1 结构体类型定义

C语言对结构体类型的定义形式: struct 结构体名 { 成员项表列 };

下面的程序的第5~11行用结构体类型对学生的描述,注意11行后需要以”;”结束。 #include int main() { struct student

1 2 3 4 5

6 7 8 9 10 11 { char name[20]; //姓名 char sex; //性别 1:男, 2:女 int age; //年龄 float score; }; return 0; 12 13 14 } 9.1.2 结构体类型变量的定义

有了结构体类型,我们就可以定义结构体类型变量,以对不同变量的各成员进行引用。结构体类型变量的定义与其它类型的变量的定义是一样的,但由于结构体类型需要针对问题事先自行定义,所以结构体类型变量的定义形式就增加了灵活性,常用的有两种形式,分别介绍如下: 1 2 3 4 5 6 7 1) 先定义结构体类型,再定义结构体类型变量: struct student { char name[20]; //姓名 char sex; //性别 1:男, 2:女 int age; //年龄 float score; }; 8 9 struct student s1; //定义结构体类型变量 10 struct student s2; 用此结构体类型,可以定义更多的该结构体类型变量。 2 ) 定义结构体类型同时定义结构体类型变量: 1 2 3 4 5 6 struct date { int day; int month; int year; } d1,d2; 也可以再定义如下变量: struct data d3,d4;

用此结构体类型,同样可以定义更多的该结构体类型变量。