C语言结构体定义的几栽艺术

啊是结构体?

在C语言中,结构体(struct)指的是一律栽多少结构,是C语言中集合数据类型(aggregate
data
type)的一致近乎。结构体可以叫声称也变量、指针或数组等,用以实现比复杂的数据结构。结构体同时也是一对元素的成团,这些要素称为结构体的分子(member),且这些成员可以吗歧之类别,成员一般用名字访问。

结构体的定义:

C语言结构体类型的概念模板盖为:

struct 类型名{
    成员表列
} 变量;
  • 在成员表列中得以是几乎栽基本数据列,也得是布局体类型。
  • struct 类型名{} 变量;后底支行不可知漏

下为起概念结构体类型的几种方式

1. 事先定义结构体类型,再定义结构体变量。

struct student{
    char no[20];       //学号
    char name[20];    //姓名
      char sex[5];    //性别
    int age;          //年龄
};             
struct student stu1,stu2;
//此时stu1,stu2为student结构体变量

2. 定义结构体类型的还要定义结构体变量。

struct student{
    char no[20];        //学号
    char name[20];     //姓名
      char sex[5];      //性别
    int age;            //年龄
} stu1,stu2;      

这时候尚足以连续定义student结构体变量如:
struct student stu3;

3.一直定义结构体变量。

struct{
    char no[20];        //学号
    char name[20];      //姓名
      char sex[5];      //性别
    int age;          //年龄
} stu1,stu2;      

诚如不会见采取第三种定义方法,因为直接定义结构体变量stu1,stu2晚就非可知重累定义该类型的变量。

注意:

  1. 每当C语言中运用struct定义结构体类型后定义结构体变量时struct不能够简单,在C++中允许省略struct。

    在c中:
    struct student{
    ...
    };
    struct student stu1;    //struct不可省略
    
    在c++中:
    struct student{
    ...
    };
    student stu1;    //struct可省略
    
  2. 以C中定义结构体类型后历次定义变量时都要利用struct,如果嫌累,我们可以这样:

    typedef struct student{
    ...
    }STUDENT;
    STUDENT stu1;
    

    使用typedef给struct student取一个”别名”STUDENT

  3. 于少数情况下还得运用#define来促成重复简化的组织体定义与变量的概念,但恐怕会见牺牲局部可读性。

    #define STUDENT struct student;
    STUDENT{
    ...
    };
    STUDENT stu1;
    

    typedef和#define用法不同,甚至足以做起来灵活采用,使用时得要顾两者的不同之处。