精华内容
下载资源
问答
  • 定义嵌套结构体数组

    2017-01-21 16:29:28
    定义复杂结构体—包括嵌套结构体数组,并显示结构体所占字节数。
  • 讲解区分结构体与结构体数组:结构体的引出、结构体变量的定义和引用、结构体数组
  • 结构体数组定义使用

    千次阅读 2019-10-08 04:39:48
    struct student{ int num; char name[20];...结构体定义 student stud[4]; 数组变量的定义 void input (student &stud){ cout<<"请输入xxx:"; cin>>stud...
    struct student{
        int num;
        char name[20];
        ...;
    }

    结构体的定义

     

    student stud[4];

    数组变量的定义

     

    void input (student &stud){
        cout<<"请输入xxx:";
        cin>>stud . num;
        cout<<".....";
        cin>>....;
    }
    
    void output ( student &stud){
        cout<<".....";
    }
    
    for ( int i = 0 ; i<=3 ; i++){
        input (stud[i];
    }
    
    for(int i = 0 ; i<=3 ; i++){
        output(stud[i]);
    }

    结构体数组的使用

     

    转载于:https://www.cnblogs.com/likeghee/p/9983830.html

    展开全文
  • 结构体定义使用 结构体是一种构造数据类型 把不同类型的数据组合成一个整体 结构体定义形式: struct 结构体名{ 结构体所包含的变量或数组 }; 结构体是一种集合,它里面包含了多个变量或数组,它们的...

    1.结构体的定义与使用

    • 结构体是一种构造数据类型
    • 把不同类型的数据组合成一个整体

    结构体的定义形式:

    struct 结构体名{
        结构体所包含的变量或数组
    };

    结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member)。请看下面的一个例子:

    struct stu{
        char name[];  //姓名
        int num;  //学号
        int age;  //年龄
        char group;  //所在学习小组
        float score;  //成绩
    };

    注意:大括号后面的分号;不能少,这是一条完整的语句。

    stu 为结构体名,它包含了 5 个成员,分别是 name、num、age、group、score。结构体成员的定义方式与变量和数组的定义方式相同,只是不能初始化

    结构体也是一种数据类型,它由程序员自己定义,可以包含多个其他类型的数据。
    像 int、float、char 等是由C语言本身提供的数据类型,不能再进行分拆,我们称之为基本数据类型;而结构体可以包含多个基本类型的数据,也可以包含其他的结构体,我们将它称为复杂数据类型或构造数据类型。

    • 先定义结构体类型,再定义结构体变量
     struct   student 
    {       
     int num;
     char  name[20];
     char sex;
     int age; 
     float score;
     char addr[30];
     };
     struct student stu1,stu2;         
    • 定义结构体类型的同时定义结构体变量
     struct   data
     {      
      int day int month;
      int year
     }time1,time2; 
    • 直接定义结构体变量
     struct 
    {
     char name[20];
     char sex; 
     int num; 
     float score[3]
     }person1,person2; 

    2.结构体变量的初始化

    和其它类型变量一样,对结构体变量可以在定义时指定初始值。

    #include <stdio.h>
     
    struct Books
    {
       char  title[50];
       char  author[50];
       char  subject[100];
       int   book_id;
    } book = {"C 语言", "RUNOOB", "编程语言", 123456};
     
    int main()
    {
        printf("title : %s\nauthor: %s\nsubject: %s\nbook_id: %d\n", book.title, book.author, book.subject, book.book_id);
    }

    输出结果:

    title : C 语言
    author: RUNOOB
    subject: 编程语言
    book_id: 123456

    3.访问结构成员

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

    引用形式:<结构体类型变量名>.<成员名>

    注意:结构体变量不能整体引用,只能引用变量成员

    成员访问运算符是结构变量名称和我们要访问的结构成员之间的一个句号。可以使用 struct 关键字来定义结构类型的变量。下面的实例演示了结构的用法:

    #include <stdio.h>
    int main(){
        struct{
            char *name;  //姓名
            int num;  //学号
            int age;  //年龄
            char group;  //所在小组
            float score;  //成绩
        } stu1;
    
        //给结构体成员赋值
        stu1.name = "Tom";
        stu1.num = 12;
        stu1.age = 18;
        stu1.group = 'A';
        stu1.score = 136.5;
    
        //读取结构体成员的值
        printf("%s的学号是%d,年龄是%d,在%c组,今年的成绩是%.1f!\n", stu1.name, stu1.num, stu1.age, stu1.group, stu1.score);
    
        return 0;
    }

    运行结果:
    Tom的学号是12,年龄是18,在A组,今年的成绩是136.5!

    除了可以对成员进行逐一赋值,也可以在定义时整体赋值,例如: 

    struct{
        char *name;  //姓名
        int num;  //学号
        int age;  //年龄
        char group;  //所在小组
        float score;  //成绩
    } stu1, stu2 = { "Tom", 12, 18, 'A', 136.5 };

    不过整体赋值仅限于定义结构体变量的时候,在使用过程中只能对成员逐一赋值,这和数组的赋值非常类似。

    需要注意的是,结构体是一种自定义的数据类型,是创建变量的模板,不占用内存空间;结构体变量才包含了实实在在的数据,需要内存空间来存储。

    4.结构作为函数参数

    可以把结构作为函数参数,传参方式与其他类型的变量或指针类似。例如:

    #include <stdio.h>
    #include<string.h>
    
    struct Books
    {
    	char title[50];
    	char author[50];
    	char subject[100];
    	int book_id;
    };
    
    void printBook(struct Books book);//函数声明
    
    int main()
    {
    	struct Books Book1;//声明Book1,类型为Books
    	struct Books Book2;
    
    	/* Book1 详述 */
    	strcpy(Book1.title, "C Programming");
    	strcpy(Book1.author, "Nuha Ali");
    	strcpy(Book1.subject, "C Programming Tutorial");
    	Book1.book_id = 6495407;
    	printBook(Book1);
    	return 0;
    }
    void printBook(struct Books book)
    {
    	printf("Book title:%s\n", book.title);
    	printf("Book author:%s\n", book.author);
    	printf("Book subject:%s\n", book.subject);
    	printf("Book book_id:%d\n", book.book_id);
    }

    运行结果:

    Book title:C Programming
    Book author:Nuha Ali
    Book subject:C Programming Tutorial
    Book book_id:6495407

    5.结构体数组

    所谓结构体数组,是指数组中的每个元素都是一个结构体。在实际应用中,结构体数组常被用来表示一个拥有相同数据结构的群体,比如一个班的学生、一个车间的职工等。

    定义结构体数组和定义结构体变量的方式类似,请看下面的例子:

    struct stu{
        char *name;  //姓名
        int num;  //学号
        int age;  //年龄
        char group;  //所在小组 
        float score;  //成绩
    }class[5];
    //表示一个班有5个人

    结构体数组在定义的同时也可以初始化,例如:

    struct stu{
        char *name;  //姓名
        int num;  //学号
        int age;  //年龄
        char group;  //所在小组 
        float score;  //成绩
    }class[5] = {
        {"Li ping", 5, 18, 'C', 145.0},
        {"Zhang ping", 4, 19, 'A', 130.5},
        {"He fang", 1, 18, 'A', 148.5},
        {"Cheng ling", 2, 17, 'F', 139.0},
        {"Wang ming", 3, 17, 'B', 144.5}
    };

    当对数组中全部元素赋值时,也可以不给出数组长度,如:

    struct stu{
        char *name;  //姓名
        int num;  //学号
        int age;  //年龄
        char group;  //所在小组 
        float score;  //成绩
    }class[] = {
        {"Li ping", 5, 18, 'C', 145.0},
        {"Zhang ping", 4, 19, 'A', 130.5},
        {"He fang", 1, 18, 'A', 148.5},
        {"Cheng ling", 2, 17, 'F', 139.0},
        {"Wang ming", 3, 17, 'B', 144.5}
    };

    结构体数组的使用也很简单。例如,计算全班学生的总成绩、平均成绩和140分一下的人数:

    #include <stdio.h>
    
    struct{
        char *name;  //姓名
        int num;  //学号
        int age;  //年龄
        char group;  //所在小组
        float score;  //成绩
    }class[] = {
        {"Li ping", 5, 18, 'C', 145.0},
        {"Zhang ping", 4, 19, 'A', 130.5},
        {"He fang", 1, 18, 'A', 148.5},
        {"Cheng ling", 2, 17, 'F', 139.0},
        {"Wang ming", 3, 17, 'B', 144.5}
    };
    
    int main(){
        int i, num_140 = 0;
        float sum = 0;
        for(i=0; i<5; i++){
            sum += class[i].score;
            if(class[i].score < 140) num_140++;
        }
        printf("sum=%.2f\naverage=%.2f\nnum_140=%d\n", sum, sum/5, num_140);
        return 0;
    }

    运行结果:

    sum=707.50
    average=141.50
    num_140=2

    6.指向结构的指针

    可以定义指向结构的指针,方式与定义指向奇特类型变量的指针类似,

    定义形式:struct 结构体名 *结构体指针名;

    struct Books *struct_pointer;

    定义之后可以在上述定义的指针变量中存储结构变量的地址。例:

    struct_pointer = &Book1;

    为了使用指向该结构的指针访问结构的成员,必须使用->运算符,如下所示:

    struct_pointer->title;

    定义结构体指针的实例:

    struct stu{
        char *name;  //姓名
        int num;  //学号
        int age;  //年龄
        char group;  //所在小组
        float score;  //成绩
    } stu1 = { "Tom", 12, 18, 'A', 136.5 };
    //结构体指针
    struct stu *pstu = &stu1;

    也可以在定义结构体的同时定义结构体指针:

    struct stu{
        char *name;  //姓名
        int num;  //学号
        int age;  //年龄
        char group;  //所在小组
        float score;  //成绩
    } stu1 = { "Tom", 12, 18, 'A', 136.5 }, *pstu = &stu1;

    注意:结构体变量名和数组名不同,数组名在表达式中会被转换为数组指针,而结构体变量名不会,无论在任何表达式中它表示的都是整个集合本身,要想取得结构体变量的地址,必须在前面加&符号,所以给p赋值只能写成

    struct stu *p=&stu1;

    而不能写成:

    struct stu *p=stu1;

    注意:结构体和结构体变量是两个不同的概念:结构体是一种数据类型,是一种创建变量的模板,编译器不会为它分配内存空间,就像 int、float、char 这些关键字本身不占用内存一样;结构体变量才包含实实在在的数据,才需要内存来存储。下面的写法是错误的,不可能去取一个结构体名的地址,也不能将它赋值给其他变量:

    struct stu *pstu = &stu;
    struct stu *p=stu;

    7.获取结构体成员

    通过结构体指针可以获取结构体成员,一般形式为:

    (*pointer).memberName

    或者:

    pointer->memberName

    第一种写法中,.的优先级高于*,(*pointer)两边的括号不能少,如果去掉括号写成*pointer.memberName,那么就等效于*(pointer.memberName),这样意义就不对了。

    第二种写法中,->是一个新的运算符,习惯称它为“箭头”,有了它,可以通过结构体指针直接取得结构体成员,这也是->在C语言中的唯一用途。

    上面两种写法是等效的,我们通常采用第二种写法,这样更加直观。

    实例:结构体指针的使用

    #include <stdio.h>
    int main(){
        struct{
            char *name;  //姓名
            int num;  //学号
            int age;  //年龄
            char group;  //所在小组
            float score;  //成绩
        } stu1 = { "Tom", 12, 18, 'A', 136.5 }, *pstu = &stu1;
    
        //读取结构体成员的值
        printf("%s的学号是%d,年龄是%d,在%c组,今年的成绩是%.1f!\n", (*pstu).name, (*pstu).num, (*pstu).age, (*pstu).group, (*pstu).score);
        printf("%s的学号是%d,年龄是%d,在%c组,今年的成绩是%.1f!\n", pstu->name, pstu->num, pstu->age, pstu->group, pstu->score);
    
        return 0;
    }

    运行结果:

    Tom的学号是12,年龄是18,在A组,今年的成绩是136.5!
    Tom的学号是12,年龄是18,在A组,今年的成绩是136.5!

    示例:结构体数组指针的使用

    #include <stdio.h>
    
    struct stu{
        char *name;  //姓名
        int num;  //学号
        int age;  //年龄
        char group;  //所在小组
        float score;  //成绩
    }stus[] = {
        {"Zhou ping", 5, 18, 'C', 145.0},
        {"Zhang ping", 4, 19, 'A', 130.5},
        {"Liu fang", 1, 18, 'A', 148.5},
        {"Cheng ling", 2, 17, 'F', 139.0},
        {"Wang ming", 3, 17, 'B', 144.5}
    }, *ps;
    
    int main(){
        //求数组长度
        int len = sizeof(stus) / sizeof(struct stu);
        printf("Name\t\tNum\tAge\tGroup\tScore\t\n");
        for(ps=stus; ps<stus+len; ps++){
            printf("%s\t%d\t%d\t%c\t%.1f\n", ps->name, ps->num, ps->age, ps->group, ps->score);
        }
    
        return 0;
    }

    运行结果:

    Name            Num     Age     Group   Score
    Zhou ping       5       18      C       145.0
    Zhang ping      4       19      A       130.5
    Liu fang        1       18      A       148.5
    Cheng ling      2       17      F       139.0
    Wang ming       3       17      B       144.5

    参考资料:

    C语言结构体和指针

    C语言结构体数组

    C结构体

    展开全文
  • C++结构体数组 | 结构体数组使用

    千次阅读 2020-12-30 21:23:16
    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语言入门到精通

    展开全文
  • 然后去定义一个结构体对象,可以看到上面第一种定义方法. struct Student s1; 感觉有点像java中,类定义对象一样. 然后再来看,定义了以后,就可以通过 s1.name ="" ...这样来赋值了,跟java中给对象赋值一样... ...

    然后我们再来去看结构体,实际上在java中,我们用类,对象比较多,用这个结构体也是很少很少.

    但是c++中,用的结构体就多了.

    去看看怎么创建结构体

    上面这样创建.

    展开全文
  • 本篇文章主要为记录使用结构体时遇到的一些问题,方便以后查找。 C#中定义结构体主要形式为 using System.Runtime.InteropServices; //结构体属性(一字节对齐),不写的话默认4字节对齐 [StructLayout(LayoutKind....
  • 结构体及结构体数组定义

    千次阅读 2020-07-19 23:29:15
    1.结构体 结构体是用户自定义的可用的数据类型,它允许您存储不同类型的数据项。 2.结构体定义 以学生的基本信息为例,包括四个变量...(2)定义了一个结构体STU的同时定义了两个结构体STU的变量stu2,stu3。 struct
  • 结构体数组 结构体数组格式:声明变量类型 数组名称[数组长度] //定义一个结构体数组名为a,它里面包含有5个元素,每一个元素都是一个结构体变量 Wor a[5]={}; ...
  • 结构体数组定义时初始化

    千次阅读 2019-05-29 21:02:11
    结构体数组的初始化与前面讲的数值型数组的初始化是一模一样的,数值类型数组初始化的方法需要注意的是在结构体数组的初始化中同样适用,因为不管是不是数值型数组还是结构体数组都是数组。 #include<stdio.h>...
  • 【C语言】结构体数组定义使用

    千次阅读 2021-03-01 01:39:24
    一、定义结构体数组,并初始化 //首先声明结构体类型 struct students { char name[20]; int age; }; //定义结构体数组,并初始化 struct students stu[3]={"Allen",18,"Smith",19,"Grace",18}; 为了提高代码...
  • matlab结构体数组定义方法

    万次阅读 2019-03-21 14:47:58
    当需要定义的参数变量较多时,往往需要用到结构体,Matlab中结构体数组与python中字典概念差不多,使用方法也类似,下面详细介绍其定义方法。 方法一: 直接定义,如定义 // An highlighted block students.name = '...
  • go语言结构体数组定义 介绍 (Introduction) Building abstractions around concrete details is the greatest tool that a programming language can give to a developer. Structs allow Go developers to describe...
  • 使用typedef的情况二、结构体数组三、结构体嵌套结构体 一、结构体的定义和使用 结构体是存储不同类型的数据项 结构体是一种构造数据类型 结构体中的成员空间是独立的 为了访问结构的成员,我们使用成员...
  • 结构体定义和使用 语法:struct 结构体名 {结构体成员列表}; 通过结构体创建变量的方式有三种: struct 结构体名 变量名 struct 结构体名 变量名 = {成员1值,成员2值…} 定义结构体时顺便创建变量 示例: #...
  • 做了一个小的例子: #include int main() { struct Link { int LinkId; int LinkLen; int NxtLnkId; }Lnk[3]; Lnk[0].LinkId = 1; Lnk[0].LinkLen = 300; Lnk[0].NxtLnkId = 2... } 结构体数组的赋值情况:
  • 主要为大家详细介绍了C语言利用结构体数组实现学生成绩管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • ![图片说明](https://img-ask.csdn.net/upload/202007/23/1595498379_455980.png)![图片说明](https://img-ask.csdn.net/upload/202007/23/1595498386_169478.png)
  • C++结构体数组的创建和使用

    千次阅读 2020-09-02 14:16:32
    3.使用结构体数组 1.struct Dog//创建结构体 { string name; int age; }; 2.struct Dog dogarr[2]={{小黄,12},{小红,11}};//创建结构体数组 3.dogarr[0].name="小蓝"; dogarr[0].age=17;//使用 ...
  • MATLAB中定义结构体数组 最近使用MATLAB代码生成,结构体数组的问题困扰许久,先将支持代码生成的结构体数组创建方法总结如下,主要参考MATLAB帮助文档。 0. MATLAB中的结构体 结构体是使用被称为字段的数据容器将...
  • 结构体数组定义

    千次阅读 2018-08-07 22:06:32
     定义结构体数组的方法和定义结构体变量的方法类似。 eg: #include&lt;stdio.h&gt; #include&lt;string.h&gt; #define N 10 struct student { int SID; char name[N]; float score; } s2...
  • C语言结构体数组+结构体类型指针+指向...结构体数组定义的方法结构体变量定义的方法一样,只不过加了一个数组的长度而已 第一种:结构体类型同时定义,例如: struct student { int sno; char sname[10]; int
  • Fortran语言擅长的是数值计算,而数值计算中最重要的是数组结构体是Fortran语言在数值计算方面外的重要扩展,是成为通用编程语言的重要扩展
  • c++结构体数组结构体数组实例

    千次阅读 2020-12-17 16:17:26
    三个老师,每个老师带五个学生,老师是一个数组,每个老师带的五个学生又是一个数组。 #include <iostream> #include<string> using namespace std; //学生结构体 struct student{ string name; int ...
  • 定义结构体数组和定义结构体变量的方式类似,请看下面的例子: struct stu{ char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在小组 float score; //成绩 }class[5]; 表示一个班级有5个...
  • #include <string.h>///memset需要头文件<string.h>(c语言) 或 <cstring>(c++语言) struct node { int w1, w2, w3;...///结构体数组可以直接memset初始化 return 0; } ...
  • C++ 使用结构体数组

    千次阅读 2019-08-01 17:02:20
    1、结构体数组使用 #include<iostream> using namespace std; #include<string> //创建一个学生的结构体 struct student { //成员列表 string name; int age; int score; }; int main() { //...
  • C语言结构体数组使用

    万次阅读 2018-04-19 17:00:45
    1、结构体数组的优点 结构体可以存储不同的数据类型,将他们互相联系起来。...2、结构体数组定义和使用 以某一个需求为例,给出了结构体数组定义、初始化、用户交互使用、释放。struct rect /...
  • typedef定义结构体数组类型

    千次阅读 多人点赞 2018-07-05 10:54:39
    今天在看图的邻接表时,看到了这样一段代码typedef struct VertexNode { char data; int weitht; struct EdgeNode * ...这里AdjList就是结构体数组类型AdjList adjlist;等价于 struct VertexNode adjlist[M...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 160,596
精华内容 64,238
关键字:

结构体数组定义和使用