目录

  • 1 计算机概述
    • 1.1 计算机简介
    • 1.2 计算机系统
    • 1.3 数值在计算机中的表示
  • 2 C语言概述
    • 2.1 C语言发展及特点
    • 2.2 C语言程序的运行步骤和开发环境
    • 2.3 简单的C语言程序
  • 3 C语言基础
    • 3.1 变量、常量及数据类型
    • 3.2 运算符和表达式
    • 3.3 输入、输出
  • 4 选择结构
    • 4.1 计算机编程和算法
    • 4.2 if语句
    • 4.3 if嵌套和if多分支
    • 4.4 switch语句
  • 5 循环结构
    • 5.1 while语句和do...while语句
    • 5.2 for语句
    • 5.3 break语句和continue语句
    • 5.4 goto语句构成的循环
    • 5.5 嵌套循环结构
    • 5.6 程序设计举例
  • 6 函数
    • 6.1 函数的定义与调用
    • 6.2 函数的嵌套调用和递归调用
    • 6.3 作用域和生命周期
    • 6.4 章节小结与测试
  • 7 数组
    • 7.1 一维数组及应用
    • 7.2 二维数组及应用
    • 7.3 字符数组
    • 7.4 数组作为函数参数
    • 7.5 章节小结与测试
  • 8 指针
    • 8.1 指针变量
    • 8.2 指针与数组
    • 8.3 指针的多种形态
  • 9 字符串
    • 9.1 字符串概念及输入输出
    • 9.2 字符串函数
    • 9.3 指针与字符串
    • 9.4 章节小结与测试
  • 10 编译预处理
    • 10.1 宏定义
    • 10.2 文件包含
    • 10.3 条件编译
  • 11 结构体、共用体和用户定义类型
    • 11.1 结构体类型变量
    • 11.2 结构体类型数组与指针
    • 11.3 结构体与函数
    • 11.4 用指针处理链表
    • 11.5 共用体
  • 12 位运算
    • 12.1 位运算的概念和运算规则
  • 13 文件
    • 13.1 C文件概述
    • 13.2 文件的打开与关闭
    • 13.3 文件读写
    • 13.4 位置指针的定位
结构体类型数组与指针

学习目标:

理解结构体数组的概念

掌握结构体数组的定义和初始化

掌握结构体数组的应用

 

重点:

结构体数组的定义和使用

结构体数组的输入输出

 

难点:

学会结构体数组成员的使用

 

一个结构体变量可存放一组有关联的数据(如一个学生的学号、姓名、成绩等数据)。如果有10个学生的数据需要参加运算,则需用到结构体数组。

 

一、结构体数组

1. 定义:具有相同结构的结构体也可以组成数组

定义结构体数组:3种形式

形式一:间接定义

struct student

 {int  num;

   char name[20];

   char sex;

   int age;

 };

 struct student stu[2];

形式二:直接定义

struct student

 {int  num;

   char name[20];

   char sex;

   int age;

 }stu[2];

形式三:直接定义

struct

 {int  num;

   char name[20];

   char sex;

   int age;

 }stu[2];

 

2. 结构体数组初始化

struct 结构名结构数组名[数组长度]={初始数据};

1)定义数组时初始化:

struct student

  {int  num;

    char name[20];

    char sex;

    int age;

  };

struct student   stu[3]={{100,Wang Lin,M,20},{101,Li Gang,M,19},{110,Liu Yan,F,19}};

说明:

1)按顺序定义时:内层括号可以省略

2)全部初始化时维数可省


3. 结构体数组成员的访问

通过数组来访问某个元素的成员时,可使用如下方法:

结构数组名[下标].结构成员

下列两种方式也是可以的,但是由于可读性较差,所以很少使用,尤其是最后一种。

( 结构数组名+下标 ) -> 结构成员

( *( 结构数组名+下标 ) ).结构成员

 

二、结构体数组应用

1. 11.1 结构体数组成员的使用

struct student

  {int  num;

    char name[20];

    char sex;

    int age;

  };

struct student   stu[ ]={{100,Wang Lin,M,20}, ……};

stu[0].age++;

strcpy(stu[0].name, ZhaoDa);

 

2. 11.2 统计候选人选票

3个候选人,每个选民只能投票选一人,要求编写一个统计选票的程序,先后输入被选人的名字,最后输出各人得票结果。