<27>【理解】02-结构体数组概念及定义+【掌握】03-结构数组的初始化和遍历

【理解】02-结构体数组概念及定义

结构体数组:

        用来存放大量的结构体相同的结构体变量

   结构体数组定义:

        结构体数组定义的第一种方式:

        1)定义结构体的同时,定义数组
        struct Student{

            int age;
            char *name;
            int s_no;
            float score;

        }stu[5];
       结构体数组定义的第二种方式
       2)先定义结构体,后定义数组 struct Student boy[5];
#include <stdio.h>

int main(int argc, const char * argv[]) {

    struct Student{

        int age;
        char *name;
        int s_no;
        float score;

    }stu[5];

    struct Student boy[5];

    return 0;
}

【掌握】03-结构数组的初始化和遍历

#include <stdio.h>
void test1(){

    //结构体数组的初始化方法

    //1、定义结构体数组的时候,进行初始化
    struct Student{

        char name[20];
        int age;

    }boys[3]={{"sb",18},{"zbz",38},{"cgx",28}};

    //2、定义的同时进行初始化
    struct Student girls[2]={{"fengjie",18},{"cjk",28}};

    //3、先定义后初始化,整体赋值
    struct Student ds[2];
    ds[0]=(struct Student){"xzmly",18};
    ds[1]=(struct Student){"bdjy",18};

    //4、先定义结构体数组,后初始化

    struct Student stu[2];
    //stu[0].name = "zhangsan"; // 报错,常量不能赋值
    //strcpy(stu[0].name,"zhangsan"); //第一种赋值方法
    scanf("%s",stu[0].name);
    stu[0].age = 19;

    //    char ch[10];        //第二种方法模仿这个赋值方式
    //    scanf("%s",ch);

    //2、结构数组的遍历**********
    for(int i=0;i<3;i++){

        printf("name:%s,age:%d\n",boys[i].name,boys[i].age);
    }
}

int main(int argc, const char * argv[]) {

    test1();

    return 0;
}
dsf                        //阻塞函数不运行,语句不会往下走
name:sb,age:18
name:zbz,age:38
name:cgx,age:28
时间: 2024-08-27 09:36:34

<27>【理解】02-结构体数组概念及定义+【掌握】03-结构数组的初始化和遍历的相关文章

结构体最后的长度为0或1数组的作用--零长数组

其实很早在看LINUX下就看到这个东西,后来在李先静的<系统程序员成长计划>里看到了类似的定义,于是心里想着总结一下,结果发现网上已经有牛人总结的很好了,于是乎就转了过来,谢谢你们的分享,这是我前进的动力! 同时,需要引起注意的:ISO/IEC 9899-1999里面,这么写是非法的,这个仅仅是GNU C的扩展,gcc可以允许这一语法现象的存在.(C99允许.微软的VS系列报一个WARNING,即非常的标准扩展.) 结构体最后使用0或1的长度数组的原因,主要是为了方便的管理内存缓冲区,如果你直

【转载】C++中结构体的声明和定义

http://blog.csdn.net/whuslei/article/details/5665289 1  //定义一个结构体,类型为struct Student 2  struct  Student      3  { 4      string name; 5      double eng; 6      double ch; 7  };  8    9  //定义了一个结构体,类型为struct Student:且定义了一个结构体实例,名叫Stu 10  struct  Studen

结构体的声明与定义分离

最近看到一种比较新颖的写法 -- 结构体在头文件中声明, 源文件中定义 A.h typedef struct Context Context; A.cpp #include "stdafx.h" #include "A.h" struct Context { int param; char *str; }; 原以为这样应该会报错, 因为头文件中的 "struct Context" 应该是找不到的, 但amazing, 竟然能顺利编译过, 由此让我

当结构体遇上宏定义,以及函数指针的高级写法(结构体中能用宏定义一个函数?)

一.结构体中可以定义一般的宏定义 如: struct aaa{   #define STATUS_1 100   #define STATUS_2 200   #define STATUS_3 300   ........}: 首先,这里的宏定义是在预编译阶段完成的,编译器此时并不知道什么结构体,所以这些宏是全局可见的.   一个宏定义,如果写在结构体之内,即使与结构体之外的宏定义名字重复了最多是编译警告.可是如果不在结构体之内,名字重复可肯定是error.(未证实,可以做实验,而且可以把两处的

20150920学习内容:结构体及题目:定义一个学生的结构体,学号,姓名,身高,输入学生信息,按身高排序输出

结构体:用户自定义数据类型,实际就是变量组,可以一次存多个不同变量 结构体定义在main函数的外面 Struck 结构体名 { // 元素一 // 元素二 } 题目:定义一个学生的结构体,学号,姓名,身高,输入学生信息,按身高排序输出

结构体的四种定义方法

1.先定义结构体类型,再定义结构体变量 struct student{ int data; }; struct student stu1;//stu1为student的结构体变量 2.定义结构体变量的同时,定义结构体变量 struct student{ int data; }stu1; 如果想要继续定义结构体变量 struct student stu2;//这样既可以再次定义结构体变量 3.不定义结构体类型,而直接定义结构体变量 struct{ int data; }stu1; 这样做的缺陷很大

C语言中的结构体和C++中的结构体以及C++中类的区别

c++中结构体可以定义一个函数 C中的结构体和C++中结构体的不同之处:在C中的结构体只能自定义数据类型,结构体中不允许有函数,而C++中的结构体可以加入成员函数. C++中的结构体和类的异同: 一.相同之处:结构体中可以包含函数:也可以定义public.private.protected数据成员:定义了结构体之后,可以用结构体名来创建对象.但C中的结构体不允许有函数:也就是说在C++当中,结构体中可以有成员变量,可以有成员函数,可以从别的类继承,也可以被别的类继承,可以有虚函数. 二.不同之处

结构体的两种定义方式

typedef struct 用法小结 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字.这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等).在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明. typedef与结构体结合使用 typedef struct tagMyStruct { int iNum; long lLength; } MyStruct; 这句话实际上完成两个

结构体与typedef的使用,还有结构体指针的使用(二层结构体指针)

该类容摘抄自以下链接,为学习之后的记录,不是鄙人原创. 学习链接:https://blog.csdn.net/a2013126370/article/details/78230890 typedef struct                {                    ...                    ...                }POINT,*POINT_P;  POINT为结构名,这个名字主要是为了在结构体中包含自己为成员变量的时候有用