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

    1c3d753251d3f0af61f54c2e010ffc75.png

    一个结构体变量可以存放一个学生的一组信息,可是如果有 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

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

    想要了解web开发知识,请查阅 HTML中文网 !!

    展开全文
  • 今天在代码实现的时候,某一个设备状态结构体对应的设备有多个,因此定义了一个结构体数组,当在函数中处理时发现有点尴尬的是忘记了该怎么定义结构体指针参量才能在函数中正确访问各成员。 结论 关于结构体数组指针...

    场景

    今天在代码实现的时候,某一个设备状态结构体对应的设备有多个,因此定义了一个结构体数组,当在函数中处理时发现有点尴尬的是忘记了该怎么定义结构体指针参量才能在函数中正确访问各成员。

    结论

    关于结构体数组指针的使用,参见C语言结构体数组指针以及函数;

    其实当成一般的整形数组处理就好,因为C把你的自定义的结构体类型当成了元类型,你的结构体指针p进行自增操作p++,和整形数组自增操作一样,指针位置会自动偏移你定义的结构体大小的长度。总之,将结构体数组指针看作和整形数组指针一样就好,唯一的区别就是一个是整形常数一个是结构体,两者都是数据类型

    展开全文
  • 结构体数组初始化

    2021-03-17 15:24:52
    《代码大全》建议在变量定义的时候进行初始化,但是很多人,特别是新人对结构体或者结构体数组定义是一般不会初始化,或者不知道怎么初始化。 1、初始化 typedef struct _TEST_T { int i; char c[10]; }TEST_T; TEST...

    《代码大全》建议在变量定义的时候进行初始化,但是很多人,特别是新人对结构体或者结构体数组定义是一般不会初始化,或者不知道怎么初始化。

    1、初始化

    typedef struct _TEST_T {
    int i;
    char c[10];
    }TEST_T;

    TEST_T gst = {1, “12345”};//可以初始化,设置i为1,s为一个字符串.

    TEST_T gst = {1};//初始化个数少于实际个数时,只初始化前面的成员。

    TEST_Tgst = {.c=“12345”};//有选择的初始化成员。

    2、复合字面量。

    gst = (TEST_T){122, “1256”};//这是一个赋值语句,也可以作为初始化。可以出现在程序的任何地方。

    当然也可以使用复合字面量来初始化:

    gst = (TEST_T){.i=122, .c=“123”};

    3、结构体数组

    可以用多个大括号括起来:

    TEST_T gst[10] = {{},{},{},{}}

    也可以初始化其中的一个元素:

    TEST_T gst[10] = {[2]={}, [3]={}}

    也可以使用复合字面量:

    TEST_T gst[10] = {[2].i=0, [3].i={}}

    为什么要初始化:

    1、对局部变量初始化可以防止随机值产生的危害。

    2、对全局变量初始化可以告诉编译器,这是一个定义,而不是一个声明。(如果两个c中有相同的全局变量定义,且没有初始化,编译器会认为第二个是声明而不是定义。)

    展开全文
  • 关于如何定义结构体数组,和将结构体指针指向结构体变量数组,不是重点。 重点是,明白结构体指针的是怎么移动的, 我个人理解 指针==地址 用指针操作的就是地址 demo: 1 # include <stdio.h> 2 # ...

    当结构体指针变量指向一个结构体变量数组的时候,此时指针变量的值就是结构体数组的首地址

    关于如何定义结构体数组,和将结构体指针指向结构体变量数组,不是重点。

    重点是,明白结构体指针的是怎么移动的, 我个人理解 指针==地址 用指针操作的就是地址

    demo:

     1 # include <stdio.h>
     2 # include <stdlib.h>
     3 
     4 
     5 //创建一个结构体
     6 struct Student
     7 {
     8     char cName[20];
     9     int iNumber;
    10     char cSex;
    11     int iGrade;
    12 
    13 }student[3]=
    14 {
    15     {"瑶瑶",908,'W',2017},
    16     {"yy",606,'M',2017},
    17     {"500days",500,'Y',2017},
    18 };
    19 
    20 
    21 int main ()
    22 {
    23     struct Student *pStruct;
    24     int index;
    25     pStruct = student;
    26     for(index=0; index<3; index++,pStruct++)
    27     {
    28         printf("NO%d student's information\n",index+1);
    29         printf("Name:%s\nNumber:%d\nSex:%c\nGrade:%d\n",pStruct->cName,pStruct->iNumber,pStruct->cSex,pStruct->iGrade);
    30     }
    31     printf("pStruct:%d\n&student[2]:%d\n",pStruct,&student[3]);        
    32     return 0;
    33 }

     

    第26行,index++后面还有一句控制着指针的移动,循环完一次,指针将指向下一个地址中的成员

    大概图示是这样的:没好好写:) 所以字体..呵呵呵 凑合看把:)

     

    程序运行结果:

    NO1 student's information
    Name:瑶瑶
    Number:908
    Sex:W
    Grade:2017
    NO2 student's information
    Name:yy
    Number:606
    Sex:M
    Grade:2017
    NO3 student's information
    Name:500days
    Number:500
    Sex:Y
    Grade:2017
    pStruct:6294176
    &student[2]:6294176

    输出&student[3]的值

    输出pStruct的值

    它们相等! 所以我”想当然“ 的是对哒

     

    转载于:https://www.cnblogs.com/dire/p/5223006.html

    展开全文
  • 怎么定义一个结构体数组,使数组的每个元素是一个结构体变量。像这样:a=(1,2)a(1)=struct('name',0,'num',0)a(1)=struct('name',0,'num',0) 匿名|浏览 10361 次 发布于2013-04-01 17:34 ...
  •  定义了一个结构体数组,并将文本数据存储进去了,想用容器qvector存储起来使用,但是不知道具体该怎么操作。</p>
  • 定义了结构体和结构体数组,结构体中想存的数据写在了txt文件中,我该怎么做初始化 //定义结构体// struct achievement {int number; char name[20]; char sex; float achievement1,achievement2,achievement3; }...
  • <p style="text-align:center"><img alt="" height="111" src="https://img-ask.csdnimg.cn/upload/1616590473949.png" width="570" /></p> <p style="text-align:center">... 这个结构体数组应该怎么定义?</p>
  • 去看看怎么创建结构体 上面这样创建. 注意创建结构体的写法要知道 然后去定义一个结构体对象,可以看到上面第一种定义方法. struct Student s1; 感觉有点像java中,类定义对象一样. 然后再来看,定义了...
  • c语言之结构体数组数据传递

    千次阅读 2020-03-30 12:21:45
    1,在项目开发过程中,数据之间的传递是必不可少的,当我们需要传递一个数据的时候,我们只需要定义一个变量就可以了,那么当我们需要传递一组数据且多次传递时我们需要怎么做呢,我们使用结构体数组可以实现,在...
  • JavaScript之结构体数组的使用一、前言 一、前言 Javascript小白,之前都是用的C/C++写代码,现在用js写前端代码,遇到点层次包含较多的数据结构,想着怎么用类似C语言的结构体来解决。 其实在Javascript中,就是...
  • '定义结构体 Public Structure RowData Public CellData() As String End Structure '使用结构体 Dim myA() As RowData 初始化……? ReDim Preserve myA(myA.Length + 1) 赋予新值……? 怎么初始化...
  • C#如何定义一个结构体数组的指针

    千次阅读 2018-10-05 13:41:30
    在VS里写C#怎么提示隐藏由基类显式实现的接口方法在VS里写C#怎么提示隐藏由基类显式实现的接口方法在VS里写C#怎么提示隐藏由基类显式实现的接口方法在VS里写C#怎么提示隐藏由基类显式实现的接口方法在VS里写C#怎么...
  • 定义了一个结构体定义了一个结构体指针,给指针分配空间之后,对其初始化,系统会报错, > 0x00B81B70 处(位于 DataStructure.exe 中)引发的异常: 0xC0000005: 写入位置 0xCDCDCDD1 时发生访问冲突。 ...
  • typedef struct students { long code; char *name; float score[3]; float sum; }cla[40]; 这样定义是什么意思呢? cla代替了struct students? 正确的写法是怎么样的
  • void Delete(struct student *head) { system("cls"); int exit=0; char s[5]; printf("输入要删除学生的学号:(如果删除所有学生请输入0000)\n学号:"); scanf("%s",s); while(!exit){ ...}
  • 最初最简单的时候,只需要使用基本数据类型来定义单个变量,需要几个就定义几个,后来有时候需要很多意义相关的变量这时候数组出现了。数组解决了需要很多类型相同,意义相关的变量问题,但是数组是有限制的,数组的...
  • struct sinfo { char name[100]; int id; char addr[100]; int math; int english; int computer; sinfo *next; };...以上是结构体定义 ...我想要定义一个sinfo类型的动态指针数组
  • } 之后再定义一个结构体,成员是第一个结构体数组形式 [StructLayout(LayoutKind.Sequential)] public struct THREGION_Array { [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public ...
  • 初始化结构体数组怎么写? 报错2个: 1、错误的数组声明符: 要声明托管数组,秩说明符应位于变量标识符之前。要声明固定大小缓冲区字段,应在字段类型之前使用 fixed 关键字。 2、无法将类型“CnChess....
  • 在C#中应该怎么定义? 因为我在C#中使用构造函数,但是不允许有无参数的构造函数。 所以不知道怎么办了。 另外,C#中怎么使用#ifndef #define #endif 宏定义,是否可以使用? [/size]
  • 1,结构体 :在存储和处理大批量数据时,一般会使用数组来实现,但是每一个数据的类型及含义必须一样。如果需要把不同类型、不同含义的数据当作一个整体来处理,如 1000 个学生的姓名、性别、年龄、体重、成绩等,...
  • 发送数据时,只能发送byte数组,处理起来比较麻烦不说,如果是和VC6.0等写的程序通信的话,很多的都是传送结构体,在VC6.0中可以很方便的把一个char[]数组转换为一个结构体,而在C#却不能直接把byte数组转换为结构体,...
  • 那N2……怎么定义?一字节一字节定义岂不是会累死?后面还有几十个字节的。 (不能在初始化的时候赋值,因为我既需要长度又需要赋值,因为长度不会变,值可能经常要改。) 类似于C结构体那种吧,有没有个方法一类的...
  • 首先是结构体成员如果是字符数组,该怎么赋值? 以一个结构体为例:  struct si{  char x[5];  char y;  float z;  double m;  }su; 我用的su.x="abcd"和直接在定义是初始化,均报错
  • 设有定义:struct{char mark[12];intnum1;double num2;}t1,t2;若变量均已正确赋初值,则以下语句中错误的是(C) (A) t1=t2; (B) t2.num1=t1.num1; (C) t2.mark=t1.mark;//mark为结构体中的数组,不能直接赋值?...
  • C++里Trie树怎么定义带有char数组的结点结构体啊,还有这个数组定义了之后怎么给自定义的插入函数传参?结点怎么指向这个数据?找了好久都没找到这样的模板,我们老师要求是子叶结点还要附带其他信息,小白哭了。...
  • 2. 结构体怎么用?2.1 定义结构体2.2 定义结构体变量2.3 结构体成员引用2.5 结构体成员赋值2.6 结构体赋值2.7 结构体整体初始化2.8 结构体部分初始化3. 其他语法3.1定义结构体并同时定义结构体变量3.2 定义结构体并...
  • 首先,结构体是什么? 当处理一部分问题时如果定义一大堆变量可能会显得麻烦,也不能表现出它们之间的内部关系。比如常见的学生管理系统,学生的个人信息包括学号(int),姓名(char),性别(char),年龄(int)...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 181
精华内容 72
关键字:

结构体数组怎么定义