• 结构体数组


    5 结构体数组

      一个结构体变量中能够存放一组数据(如一个学生的学号,姓名,成绩等数据)。假设有10个学生的数据须要參加运算,显然应该用数组,这就是结构体数组。结构体数组与曾经介绍过的数据值型数组不同之处在于每一个数组元素都一个结构体类型的数据,它们分别包含各个成员(分量)项。

    5.1 定义结构体数组

      和定义结构体变量的方法相仿,仅仅需说明其为数组就可以。

      struct student

      {

        int num;

        char name[20];

        char sex;

        int age;

        float score;

        char addr[30];

      };

      struct student stu[3];

      以上定义了一个数组 stu,其元素为 struct student 类型数据,数组有 3 个元素。也能够直接定义一个结构体数组。如:

      struct student

      {

        int num;

        ....

      }stu[3];



      struct

      {

        int num;

        ...

      }stu[3];

    5.2 结构体数组的初始化

      与其他类型数组一样,对结构体数组能够初始化如:

      struct student

      {

        int mum;

        char name[20];

        char sex;

        int age;

        float score;

        char addr[30];

      }stu[3] = {{10101,"Li Lin", 'M', 18, 87.5, "103 Beijing Road"},

            {10101,"Li Lin", 'M', 18, 87.5, "103 Beijing Road"},

            {10101,"Li Lin", 'M', 18, 87.5, "103 Beijing Road"}};

      定义数组 stu 时,元素个数能够不指定,即写成下面形式:

      stu[] = {{...},{...},{...}};

    编译时,系统会依据给出初值的结构体常量的个数来确定数组元素的个数。

      当然,数组的初始化也能够用下面形式:

      struct student

      {

        int num;

        ...

      };

      struct student stu[] = {{...},{...},{...}};

    即先声明结构体类型,然后定义数组为该结构体类型,在定义数组时初始化。

      从以上能够看到,结构体数组初始化的一般形式是在定义数组的后面加上:

    5.3 结构体数组应用举例

      以下样例说明结构体数组的定义和引用。

    #include <stdio.h>

    #include <string.h>

    #include <stlib.h>

    struct person

    {

      char name[20];

      int count;

    }leader[3] = {{"Li", 0},

           {"Zhang", 0},

           {"Fun", 0}};

    void main()

    {

      int i, j;

      char leader_name[20];

      for(i = 1; i<= 10;i++)

      {

        scanf("%s", leader_name);

        for(j=0;j<3;j++)

          if(strcmp(leader_name, leader[j].name) == 0)

            leader[j].count ++;

      }

      printf(" ");

      for(i=0;i<3;i++)

        printf("%5s: %d ", leader[i].name, leader[i].count);

      system("pause");
    }

    执行结果例如以下:

    LI
    Li
    Fun
    Zhang
    Zhang
    Fun
    Li
    Fun
    Zhang
    Li

       Li: 3
    Zhang: 3
      Fun: 3
  • 相关阅读:
    [编织消息框架][netty源码分析]13 ByteBuf 实现类CompositeByteBuf职责与实现
    [编织消息框架][netty源码分析]12 ByteBuf 实现类UnpooledDirectByteBuf职责与实现
    [编织消息框架][netty源码分析]11 ByteBuf 实现类UnpooledHeapByteBuf职责与实现
    [编织消息框架][netty源码分析]10 ByteBuf 与 ByteBuffer
    [编织消息框架][netty源码分析]9 Promise 实现类DefaultPromise职责与实现
    [编织消息框架][netty源码分析]8 Channel 实现类NioSocketChannel职责与实现
    [编织消息框架][netty源码分析]7 Unsafe 实现类NioSocketChannelUnsafe职责与实现
    浅谈如何在SQL Server中生成脚本
    word中如何将空格变成换行
    win2003从组策略关闭端口(445/135/137/138/139/3389等)教程
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4233841.html
Copyright © 2020-2023  润新知