结构体定义

对于一组相同类型的数据,比如一个班上所有人的考试成绩,可以用数组来存放。但是,对于一组不同类型的数据,比如一个班上的学生的年龄,姓名,性别等,由于数据类型不一样,就不能仅仅通过数组来存放了。

于是,在C语言里,提供了一个叫struct(结构体)这样的一个新的数据类型。“结构”是一种构造类型,它是由若干“成员”组成的。 每一个成员可以是一个基本数据类型或者又是一个构造类型。

成员表由若干个成员组成, 每个成员都是该结构的一个组成部分。对每个成员也必须作类型说明,其形式为:

    类型说明符 成员名;

    成员名的命名应符合标识符的书写规定。例如:

    struct student

    {

        int id;

        int age;

        char name[20];

        char sex;

        float score;

    } ;

       

该结构定义了一个有关学生信息的一个结构体。其中学号为整型的id,年龄为整型的age,名字为char类型的字符数组,性别为一个char类型的字符sex,成绩则为一个float类型的score。他们共同组成了一个学生的信息。

10.1结构体定义

定义一个结构的一般形式为如下几种:

1struct 结构名

{

       成员表列

};

struct 结构名 变量名;

 

比如:

struct S

{

    int value;

    char ch;

};

struct S s1;//此处利用结构体类型struct S定义了一个结构体的变量s1

 

2struct 结构名

{

       成员表列

}变量名1,变量名2;

 

比如:

struct S

{

    int value;

    char ch;

}s1,s2;//此处在定义结构体类型的时候,同时定义了2个结构体变量s1,s2

 

3struct

{

       成员表列

}变量名1,变量名2;

比如:

struct

{

    int value;

    char ch;

}s1,s2;//此处定义了2个结构体类型变量s1s2,但结构体的类型是匿名的,因此这个结构体只能用来定义这2个结构体变量

 

4typedef struct _结构名

{

       成员表列

}结构名,*P结构名;

 

结构名 变量名;

比如:

typedef struct _S

{

int value;

char ch;

}S,*PS;

S s1;//这里定义了一个类型为S的结构体变量s1

PS s2;//这里定义了一个类型为PS的结构体指针s2,等价于:S *s2;PSS*是等价的。

4种定义方法是结构体定义的主流定义方法。目前大多数程序库中对结构体的定义方法都是采用第4种定义的方法。

周哥教IT,分享编程知识,提高编程技能,程序员的充电站。跟着周哥一起学习,每天都有进步。

通俗易懂,深入浅出,一篇文章只讲一个知识点。

当你决定关注「周哥教IT」,你已然超越了90%的程序员!

IT黄埔-周哥教IT技术交流QQ群:213774841,期待您的加入!

二维码
微信扫描二维码关注