当前课程知识点:C语言程序设计 > 第11章 复杂数据类型 > 11.4 结构体数组 > 结构体数组
同学们好
在这一节中
我们将和大家探讨
定义了会使用结构体变量的基础上
学习如何应对批量数据
解决复杂批量数据的
存储方法之一是结构体数组
所以我们这节课
一个重要的内容是结构体数组
请同学们多练习
这是大数据时代必备的技能之一
同学们大家已经学习了
结构体类型的定义
用自己定义的新类型
可以定义结构体变量
使用结构体变量中可以存放
一组数据如一个学生的学号
姓名
成绩等数据
那么如果有10个学生的数据
需要参加运算
我们要如何存储呢
使用10个变量吗
很显然显然应该用数组
这就是结构体数组
结构体数组与以前介绍过的数值型数组
不同之处在于每个数组元素
都是一个结构体类型的数据
它们都分别包括各个成员(分量)项
首先我们研究以下结构体数组定义
和定义结构体变量的方法相仿
只需说明其为数组即可
定义结构体数组一般形式是
struct 结构体名成员表列
数组名数组长度
与结构体类型数组名数组长度
例如
以下3段代码
上面这两个实例都是定义
两种方式的结构体数据
我们可以在定义的同时
使用如下程序语句对它进行初始化
在内存当中我们就可以得到
一个如下图的结构体数组
结构体数组应用举例
下面举一个简单的例子来说明
结构体数组的定义和使用
例如
对候选人得票的统计程序
设有3个候选人
每次输入一个名字
要求最后输出各人得票结果
程序如下
程序定义了一个全局的结构体数组 leader
它有3个元素
每一元素包含两个成员
name和coun
在定义数组时使之初始化
使3位候选人的票数都先置零
其内存结构如图
在主函数中定义字符数组 leader-name
它代表被选人的姓名
在10次循环中每次先输入
一个被选人的具体人名
然后把它与3个候选人姓名相比
看它和哪一个候选人的名字相同
注意 leader-name和 leader
[j].name相比
leader[j]是数组 leader的第j个元素
它包含两个成员项
leader_name应该和 leader数组第j
个元素的name成员相比
若i为某一值时
输入的姓名与 leader[j].name相等
就执行leader[j].coun++
由于成员运算符.
优先于自增运算符 ++
因此它相当于( leader[j].count)++
使 leader[j]的成员 count的值加1
在输入和统计结束之后
将3人的名字和得票数输出
下图我们可以看到某特定输入的输出结果
今天的内容就讲到这里
在这一节中
我们和大家探讨
定义了会使用结构体变量的基础上
学习如何应对批量数据
解决批量数据的存储方法之一是数组
所以我们这节课一个重要的内容是数组
请同学们多练习
这是大数据时代必备的技能之一
同学们
我们下次课再见
-计算思维与计算机
--计算思维与计算机
--计算思维与计算机
--计算思维和计算机
-2.1 程序设计语言的发展及其特点和应用
--程序设计语言的特点及发展
- 2.2 C语言程序的基本结构及编制C语言程序的基本步骤
--C语言程序的结构和编制步骤
-3.1 C语言的数据类型
--C语言的数据类型
--C语言的数据类型
-3.2 常量
--常量
--常量
-3.3 什么是变量
--什么是变量
--什么是变量
-3.4 如何进行算术运算
--如何进行算术运算
--如何进行算术运算
-3.5 赋值运算符和逗号运算符
--赋值运算符和逗号运算符
-3.6 数据类型转换
--数据类型转换
--数据类型转换
-4.1 格式化输出printf
--格式化输出
-4.2 格式化输入scanf及字符数据的非格式化输入输出
--格式化输入
-5.1 关系运算符和关系表达式
--关系运算符和关系表达式
-5.2 逻辑运算符和逻辑表达式
--逻辑运算符和逻辑表达式
-5.3 条件运算符和条件表达式
--条件运算符和条件表达式
-5.4 if语句
--if语句
--if语句
-5.5 switch语句
--switch语句
--switch语句
-6.1 while语句
--while语句
--while语句
--do-while语句
-6.2 for语句
--for语句
--for语句
-6.3 循环的嵌套
--循环的嵌套
--循环的嵌套
-6.4 break语句和continue语句
--break和continue语句
-7.1 一维数组的定义和引用
--一维数组的定义和引用
-7.2 一维数组的赋值
--一维数组的赋值
--一维数组的赋值
-7.3 二维数组的定义和引用
--二维数组的定义和引用
-7.4 二维数组的赋值
--二维数组的赋值
--二维数组的赋值
-7.5 字符串的本质
--字符串的本质
--字符串的本质
-7.6 字符串操作的常用函数
--字符串常用函数
-7.7 字符串数组
--字符串数组
--字符串数组
-8.1 函数概述
--函数概述
--函数概述
-8.2 有参函数
--有参函数
--有参函数
-8.3 函数参数的传递方式
--函数参数的传递方式
-8.4 变量的作用域和生存期
--变量的作用域和生存期
-8.5 变量的存储类型
--变量的存储类型
--变量的存储类型
-8.6 函数的嵌套和递归调用
--函数的嵌套和递归调用
-8.7 函数的作用域与封装
--函数的作用域与封装
-9.1 指针变量的概念(上)
--指针变量的概念(上)
-9.2 指针变量的概念(下)
--指针变量的概念(下)
-9.3 指向一维数组的指针变量
--指向一维数组的指针变量
-9.4 指向二维数组的指针变量(上)
--指向二维数组的指针变量(上)
-9.5 指向二维数组的指针变量(下)
--指向二维数组的指针变量(下)
-9.6 动态内存分配
--动态内存分配
--动态内存分配
-10.1 编译预处理
--编译预处理
-11.1 用户自己建立数据类型
--用户自己建立数据类型
-11.2 定义结构体类型变量
--定义结构体类型变量
-11.3 结构体变量的引用与初始化
-11.4 结构体数组
--结构体数组
--结构体数组
-11.5 指向结构体类型数据的指针
--指向结构体类型数据的指针
-12.1 文件的基本概念和文件指针
--文件的基本概念和文件指针
-12,2 文件的打开和关闭
--文件的打开和关闭
--文件的打开和关闭
-12.3 文本文件读写
--文本文件读写
--文本文件读写
-12.4 二进制文件读写
--二进制文件读写
--二进制文件读写