精华内容
下载资源
问答
  • 一个结构体变量可以存放一个学生的一组信息,可是如果有 10 个学生呢?难道要定义 10 个结构体变量吗?难道上面的程序要复制粘贴 10 次吗?...定义结构体数组的方法很简单,同定义结构体变量是一样的,...

    一个结构体变量可以存放一个学生的一组信息,可是如果有 10 个学生呢?难道要定义 10 个结构体变量吗?难道上面的程序要复制和粘贴 10 次吗?

    很明显不可能,这时就要使用数组。结构体中也有数组,称为结构体数组。它与前面讲的数值型数组几乎是一模一样的,只不过需要注意的是,结构体数组的每一个元素都是一个结构体类型的变量,都包含结构体中所有的成员项。

    定义结构体数组的方法很简单,同定义结构体变量是一样的,只不过将变量改成数组。或者说同前面介绍的普通数组的定义是一模一样的,如:

    struct STUDENT stu[10];

    这就定义了一个结构体数组,共有 10 个元素,每个元素都是一个结构体变量,都包含所有的结构体成员。

    结构体数组的引用与引用一个结构体变量在原理上是一样的。只不过结构体数组中有多个结构体变量,我们只需利用 for 循 环一个一个地使用结构体数组中的元素。

    下面编写一个程序,编程要求:从键盘输入 5 个学生的基本信息,如姓名、年龄、性别、学号,然后将学号最大的学生的基本信息输出到屏幕。

    # include

    # include

    struct STU

    {

    char name[20];

    int age;

    char sex;

    char num[20];

    };

    void OutputSTU(struct STU stu[5]); //函数声明, 该函数的功能是输出学号最大的学生信息

    int main(void)

    {

    int i;

    struct STU stu[5];

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

    {

    printf("请输入第%d个学生的信息:", i+1);

    scanf ("%s%d %c%s", stu[i].name, &stu[i].age, &stu[i].sex, stu[i].num);/*%c前面要加空格, 不然输入时会将空格赋给%c*/

    }

    OutputSTU(stu);

    return 0;

    }

    void OutputSTU(struct STU stu[5])

    {

    struct STU stumax = stu[0];

    int j;

    for (j=1; j<5; ++j)

    {

    if (strcmp(stumax.num, stu[j].num) < 0) //strcmp函数的使用

    {

    stumax = stu[j];

    }

    }

    printf("学生姓名:%s 学生年龄:%d 学生性别:%c 学生学号:%s\n", stumax.name, stumax.age, stumax.sex, stumax.num);

    }

    输出结果是:

    请输入第1个学生的信息:小红 22 F Z1207031

    请输入第2个学生的信息:小明 21 M Z1207035

    请输入第3个学生的信息:小七 23 F Z1207022

    请输入第4个学生的信息:小欣 20 F Z1207015

    请输入第5个学生的信息:小天 19 M Z1207024

    学生姓名:小明 学生年龄:21 学生性别:M 学生学号:Z1207035

    结构体数组定义时初始化

    结构体数组的初始化与前面讲的数值型数组的初始化是一模一样的,数值型数组初始化的方法和需要注意的问题在结构体数组的初始化中同样适用,因为不管是数值型数组还是结构体数组都是数组。下面就将前面的一个程序修改一下。

    # include

    # include

    struct STU

    {

    char name[20];

    int age;

    char sex;

    char num[20];

    };

    void OutputSTU(struct STU stu[5]); //函数声明

    int main(void)

    {

    struct STU stu[5] = {{"小红", 22, 'F', "Z1207031"}, {"小明", 21, 'M', "Z1207035"}, {"小七", 23, 'F', "Z1207022"}, {"小欣", 20, 'F', "Z1207015"}, {"小天", 19, 'M', "Z1207024"}};

    OutputSTU(stu);

    return 0;

    }

    void OutputSTU(struct STU stu[5])

    {

    struct STU stumax = stu[0];

    int j;

    for (j=1; j<5; ++j)

    {

    if (strcmp(stumax.num, stu[j].num) < 0)

    {

    stumax = stu[j];

    }

    }

    printf("学生姓名:%s 学生年龄:%d 学生性别:%c 学生学号:%s\n", stumax.name, stumax.age, stumax.sex, stumax.num);

    }

    输出结果是:

    学生姓名:小明 学生年龄:21 学生性别:M 学生学号:Z1207035

    注意,字符要用单引号括起来,字符串要用双引号括起来。

    展开全文
  • C++结构体数组定义 C++结构体数组的定义和定义结构体变量的方法相仿,只需声明其为数组即可 struct Student{ //自定义结构体变量 int num;//学号 char sex;//性别 int age;//年龄 }; Student stu[5];//定义...

    C++结构体数组

    C++结构体数组与以前介绍过的数值型数组的不同之处在于:每个数组元素都是一个结构体类 型的数据,它们都分别包括各个成员项。

    C++结构体数组定义

    C++结构体数组的定义和定义结构体变量的方法相仿,只需声明其为数组即可

    struct Student{ //自定义结构体变量 
        int num;//学号 
        char sex;//性别 
        int age;//年龄 
      };
      Student stu[5];//定义Student类型的结构体数组
    
    struct Student{ //自定义结构体变量 
        int num;//学号 
        char sex;//性别 
        int age;//年龄 
      }stu[5];//定义Student类型的结构体数组
    
    struct { //自定义结构体变量 
        int num;//学号 
        char sex;//性别 
        int age;//年龄 
      }stu[5];//定义Student类型的结构体数组
    

    C++结构体数组初始化

    struct Student{ //自定义结构体变量 
        int num;//学号 
        char sex;//性别 
        int age;//年龄 
      }stu[3]={{1001,'M',21},{1002,'F',18},{1003,'M',19}};
    

    定义结构体数组stu时,也可以不指定元素个数,即写成以下形式:

    stu[3]={{1001,'M',21},{1002,'F',18},{1003,'M',19}};
    

    编译时,系统会根据给出初值的结构体常量的个数来确定数组元素的个数。一个结构体常量应包括结 构体中全部成员的值。

    经典案例:C++结构体数组使用。

    #include<iostream>//预处理
    using namespace std;//命名空间 
    int main()//主函数 
    {
      struct Student{ //自定义结构体变量 
        int num;//学号 
        char sex;//性别 
        int age;//年龄 
      }stu[3]={{1001,'M',21},{1002,'F',18},{1003,'M',19}};
      for(int i=0;i<3;i++)//循环输出结构体数组信息 
      {
        cout<<stu[i].num<<endl;//输出学号 
        cout<<stu[i].sex<<endl;//输出性别 
        cout<<stu[i].age<<endl;//输出年龄 
        cout<<"---------"<<endl;//隔开 
      }
      return 0; //函数返回值为0;
    }
    

    执行本程序之后,会输出:

    1001
    M
    21
    ---------
    1002
    F
    18
    ---------
    1003
    M
    19
    ---------
    
    --------------------------------
    Process exited after 0.08727 seconds with return value 0
    请按任意键继续. . .
    

    C++结构体数组的使用
    更多案例可以go公众号:C语言入门到精通

    展开全文
  • C++结构体数组C++结构体...C++结构体数组定义C++结构体数组的定义和定义结构体变量的方法相仿,只需声明其为数组即可struct Student{ //自定义结构体变量 int num;//学号 char sex;//性别 int age;//年龄 }...

    809e895b62bb39905a21a106640d8c36.png

    C++结构体数组

    C++结构体数组与以前介绍过的数值型数组的不同之处在于:每个数组元素都是一个结构体类 型的数据,它们都分别包括各个成员项。

    C++结构体数组定义

    C++结构体数组的定义和定义结构体变量的方法相仿,只需声明其为数组即可

    struct Student{ //自定义结构体变量 
        int num;//学号 
        char sex;//性别 
        int age;//年龄 
      };
      Student stu[5];//定义Student类型的结构体数组
    
    struct Student{ //自定义结构体变量 
        int num;//学号 
        char sex;//性别 
        int age;//年龄 
      }stu[5];//定义Student类型的结构体数组
    
    struct { //自定义结构体变量 
        int num;//学号 
        char sex;//性别 
        int age;//年龄 
      }stu[5];//定义Student类型的结构体数组
    

    C++结构体数组初始化

    struct Student{ //自定义结构体变量 
        int num;//学号 
        char sex;//性别 
        int age;//年龄 
      }stu[3]={{1001,'M',21},{1002,'F',18},{1003,'M',19}};
    

    定义结构体数组stu时,也可以不指定元素个数,即写成以下形式:

    stu[3]={{1001,'M',21},{1002,'F',18},{1003,'M',19}};
    

    编译时,系统会根据给出初值的结构体常量的个数来确定数组元素的个数。一个结构体常量应包括结 构体中全部成员的值。

    经典案例:C++结构体数组使用。

    #include<iostream>//预处理
    using namespace std;//命名空间 
    int main()//主函数 
    {
      struct Student{ //自定义结构体变量 
        int num;//学号 
        char sex;//性别 
        int age;//年龄 
      }stu[3]={{1001,'M',21},{1002,'F',18},{1003,'M',19}};
      for(int i=0;i<3;i++)//循环输出结构体数组信息 
      {
        cout<<stu[i].num<<endl;//输出学号 
        cout<<stu[i].sex<<endl;//输出性别 
        cout<<stu[i].age<<endl;//输出年龄 
        cout<<"---------"<<endl;//隔开 
      }
      return 0; //函数返回值为0;
    }
    

    执行本程序之后,会输出:

    1001
    M
    21
    ---------
    1002
    F
    18
    ---------
    1003
    M
    19
    ---------
    
    --------------------------------
    Process exited after 0.08727 seconds with return value 0
    请按任意键继续. . .
    
    9.4 C++结构体数组mp.weixin.qq.com
    15795da489d372e4e58e3d7d124b4b15.png
    展开全文
  • 文章目录一、结构体的定义和使用1. 使用typedef的情况2.不使用typedef的情况二、结构体数组三、结构体嵌套结构体 一、结构体的定义和使用 结构体是存储不同类型的数据项 结构体是一种构造数据类型 结构体中的...

    一、结构体的定义和使用

    • 结构体是存储不同类型的数据项

    • 结构体是一种构造数据类型

    • 结构体中的成员空间是独立的

    为了访问结构的成员,我们使用成员访问运算符(.)

    结构体的定义形式:

    1. 使用typedef的情况

    • 格式一:此方法最为标准实用
    typedef struct student
    {
        char name[10];  //姓名
        int num;  //学号
        float score;  //成绩
    }stu;
    
    stu m_stu; //使用方法
    
    • 格式二:省略struct后面的内容
    typedef struct 
    {
        char name[10];  //姓名
        int num;  //学号
        float score;  //成绩
    }stu;
    
    stu m_stu; //使用方法
    
    • 格式三:省略最后分号前的定义
    typedef struct student
    {
        char name[10];  //姓名
        int num;  //学号
        float score;  //成绩
    };
    
    struct student stu;//使用方式
    

    注意:此格式编译器可能会警告,但是能够运行且可以正常读取数据不会发生段错误

    2.不使用typedef的情况

    typedef可以自定义名称,不使用相当于直接操作原生的结构体。

    • 格式一:将typedef去掉,此时stu没有意义,注意使用方式
    struct student
    {
        char name[10];  //姓名
        int num;  //学号
        float score;  //成绩
    }stu;
    
    struct student stu; //使用方法
    
    • 格式二:将typedef去掉,这是直接创建结构体变量的形式,只能使用一次,几乎没有什么用处
    struct 
    {
        char name[10];  //姓名
        int num;  //学号
        float score;  //成绩
    }stu;
    
    • 格式三:将typedef去掉,此种方式是比较标准的
    struct student
    {
        char name[10];  //姓名
        int num;  //学号
        float score;  //成绩
    };
    
    

    二、结构体数组

    每一个数组中存放着结构体,请看下图:

    结构体数组

    struct stu
    {
    	int num;
    	char name[16];
    	int age;
    };
     
    void test()
    {
    	struct stu arr[5] = { {10,"lucy",18},{11,"bob",20},{12,"tom",20} };
    	int n = sizeof(arr) / sizeof(arr[0]);
    	for (size_t i = 0; i < n; i++)
    	{
    		printf("%d %s %d\n", arr[i].num, arr[i].name, arr[i].age);
    	}
    }
    

    三、结构体嵌套结构体

    结构体嵌套结构体

    struct student
    {
    	int num;
    };
    
    struct student_1
    {
        struct student stu;
    	char name[16];
    	int age;
    };
    
    void fun_struct(void)
    {
    	struct student_1 data={{10},"xioaming",20};
    	printf("num=%d,name=%s,age=%d",data.stu.num,data.name,data.age);
    }
    
    展开全文
  • 结构体定义和使用 语法:struct 结构体名 {结构体成员列表}; 通过结构体创建变量的方式有三种: struct 结构体名 变量名 struct 结构体名 变量名 = {成员1值,成员2值…} 定义结构体时顺便创建变量 示例: #...
  • 标签:C语言中结构体数组概念及定义一个结构体变量可以存放一个学生的一组信息,可是如果有 10 个学生呢?难道要定义 10 个结构体变量吗?难道上面的程序要复制粘贴 10 次吗?很明显不可能,这时就要使用数组。...
  • C语言结构体数组使用

    千次阅读 2018-04-19 17:00:45
    1、结构体数组的优点 结构体可以存储不同的数据类型,将他们互相联系起来。...2、结构体数组定义和使用 以某一个需求为例,给出了结构体数组的定义、初始化、用户交互使用、释放。struct rect /...
  • 7.2 结构体数组定义和引用 当需要使用大量的结构体变量时,可使用结构体定义数组,该数组包含与结构体相同的数据结构所组成的连续存储空间。如下例所示: struct student stu_a[50]; // 声明长度为 50 的结构体...
  • Go 语言允许用户自定义类型。...Go 语言里声明用户自定义类型有两种方法:struct 关键字使用 struct 关键字是最常用的方法,它可以让用户创建一个结构体类型。1、声明一个结构体类型typeUserstruct{NamestringAge...
  • 结构体数组

    2018-02-15 17:27:42
    结构体数组定义以及初始化引用? 结构体的引出? 结构体数组? 要点: 详情请见: 结构体与结构体数组http://download.csdn.net/download/qq_31360933/10252178 引入数组的原因:表示一类数据,数据...
  • 为了生活是桩美妙的事而生活不知道各位数据结构学习如何下午小编做到一道题目该题需要使用结构体数组在这我就大家复习一下——结构体数组文末有惊喜结构体数组所谓结构体数组,是指数组中的每个元素都是一个结构体...
  • C语言中的结构体数组

    万次阅读 多人点赞 2017-01-15 00:45:10
    结构体数组定义和初始化 3. 结构体数组的引用结构体数组的概念元素为结构体类型的数组称为结构体数组,在实际的应用过程中,经常使用结构体数组来表示具有相同数据结构的一个群体struct student{ int xh; char ...
  • 关于结构体数组指针的使用,参见C语言结构体数组指针以及函数; 其实当成一般的整形数组处理就好,因为C把你的自定义的结构体类型当成了元类型,你的结构体指针p进行自增操作p++,整形数组自增操作一样,指针位置会...
  • C/C++结构体struct 与结构体数组和枚举型enum的结合使用 #include "stdafx.h" #include #include using namespace std; //定义一个结构体:Person struct Person { char* name; int age; int height; }; //...
  • 上一篇介绍了Go中的基本数据结构,本篇主要详细说明下结构体和Map的概念和使用。1,结构体类型首先结构体是一个数据集合,其中各自的数据元素可以是相同或不同的数据类型,类似像是PHP中的对象概念。可以定义多个key...
  • (1)结构体定义和使用 基本概念:结构体属于用户自定义的数据类型,允许用户存储不同的数据类型。 参考视频:https://www.bilibili.com/video/BV1et411b73Z?from=search&seid=4205594350351753444 已投币三...
  • MATLAB中定义结构体数组 最近使用MATLAB代码生成,结构体数组的问题困扰许久,先将支持代码生成的结构体数组创建方法总结如下,主要参考MATLAB帮助文档。 0. MATLAB中的结构体 结构体是使用被称为字段的数据容器将...
  • 结构体数组使用方法

    千次阅读 2005-06-01 20:49:00
    结构体数组定义 和定义结构体变量的方法相仿,只需说明其为数组即可。先定义结构体类型再定义数组名在定义类型的同时定义数组直接定义结构体类型数组struct 结构体名 { 成员表列 }; struct 结构体名 数组名;...
  • python实现结构体数组(初始化并赋值)

    万次阅读 热门讨论 2018-10-13 16:27:40
    C语言中结构体数组概念及定义 一个结构体变量可以存放一个学生的一组信息,可是如果有 10 个学生呢?难道要定义 10 个结构体变量吗?难道上面的程序要复制粘贴 10 次吗? 很明显不可能,这时就要使用数组。...
  • JavaScript之结构体数组使用一、前言 一、前言 Javascript小白,之前都是用的C/C++写代码,现在用js写前端代码,遇到点层次包含较多的数据结构,想着怎么用类似C语言的结构体来解决。 其实在Javascript中,就是...
  • 关于结构体数组之间的复制

    千次阅读 2020-03-06 22:37:29
    对于两个定义结构体数组a[]b[],假如我们已经给a初始化了,这时候想把结构体数组a[]中的每一项都复制到b[]中相对应的每一项时,我们可以使用用memcpy函数。 首先肯定要在开头引用头文件,memcpy函数在string.h库...
  • 同普通变量和数组一样,需要多个变量的时候我们需要引入数组,如果要定义多个结构体,那么我们同样是要引入结构体数组结构体数组的本质也是一个一维数组,只不过一维数组的每一个成员又是结构体。 typedef struct ...
  • 这里的数据类型是 struct student定义一个结构体数组和定义一个普通数据类型,使用方法也类似,只要明白C语言中的数据类型这个概念就行,下面就给出一个结构体数据类型数组的实例供各位参考学习。 struct student ...
  • OCX 结构体数组属性的定义和使用

    千次阅读 2009-12-01 12:08:00
    一。定义1. odl文件: importlib(STDOLE_TLB);importlib(STDTYPE_TLB); typedef[uuid(6EDD5246-DEB1-433f-8AFE-535C851A9C1E),helpstring("abc struct") ] struct sabc { long la;long lb;
  • C语言中结构体数组概念及定义一个结构体变量可以存放一个学生的一组信息,可是如果有 10 个学生呢?难道要定义 10 个结构体变量吗?难道上面的程序要复制粘贴 10 次吗?很明显不可能,这时就要使用数组。结构体中...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,032
精华内容 412
关键字:

结构体数组定义和使用