结构体

结构体的定义

结构体的三种定义方式:

struct name{ 成员列表; };

typedef struct { 成员列表; }name;

typedef struct name1{ 成员列表; }name2;

  结构体可当作变量来使用,与C语言自带的标准变量不同的是,它允许内部有多个不同的变量(可以为常见的变量(int、float等)、指针或者其他的结构体)。

例如:

struct base{ 成员列表; }; struct top{ base a; 成员列表; };

结构体变量的大小为字节对齐(后面的文档会讲)后所占空间的总和。

结构体的使用

    例:
 typedef struct {
  float Chinese;
  float Math;
  float English;
 }score;
 typedef struct {
  char name;
  int number;
  score *score; //结构体指针
 }student;

 student liming;

 liming.name = liming;

 liming.number = 1;

 liming->score.Chinese = 81;//注意结构体指针的使用方式
 liming->score.Math = 90;
 liming->score.English = 90;

  结构体还可以作为函数的形参和返回值。但是因为结构体作为函数形参会使函数的栈帧所占空间很大,浪费了栈空间,同时结构体作为返回值会拖累函数的返回速度,并且还会额外开销栈区空间,所以不建议直接将结构体本身带入函数,而是用结构体指针来代替结构体本身。