结构体常识

来源:互联网 发布:带着淘宝穿异界txt 编辑:程序博客网 时间:2024/06/10 03:45

结构体的定义:

struct  结构名称{

  数据类型  成员名称;

成员列表;

}

结构体是一种构造类型(也称为复杂数据类型),由不同的变量构成,变量可以是不同数据类型的,每个变量可以是基本数据类型,也可以是构造类型。

构造出结构体之后,结构体也是一种数据类型,可用于声明变量。

下面是结构体以及结构体变量常用的定义方式:

struct stu{       //第一种   char  name[10];   int    num;    //学号   char  sex;    //性别    float   score;   成绩};struct stu  stu1,stu2;  //定义了两个stu类型的变量,每个变量都有4个成员。
struct stu{     //第二种,和第一种没啥区别。。    char *name;  //姓名    int num;  //学号    char sex;  //性别    float score;  //成绩} stu1, stu2;</span>
struct{  //没有写 stu          //第三种,这种定义方式由于没有结构名,所以从始至终只有两个变量,不可以声明新的这种类型的变量。    char *name;  //姓名    int num;  //学号    char sex;  //性别    float score;  //成绩} stu1, stu2;
#define STU struct stu              //第四种,这种称为宏定义方式,每次只需要写出宏的名,就可以声明新的变量了。STU{    char *name;  //姓名    int num;  //学号    char sex;  //性别    float score;  //成绩};STU stu1, stu2;
成员的使用: 

  变量名.成员名。    运算符  .  
结构体数组:

定义:

struct stu{  char  name[20];  int    num;     char  sex;float    score;}class[10];     这个班级有十个学生。每个学生是一个stu类型的变量。
初始化赋值:

struct stu{    char *name;    int num;    char sex;    float score;}class[5] = {            //也可以不写具体数组长度。    {"Li ping", 5, 'M', 45},    {"Zhang ping", 4, 'M', 62.5},    {"He fang", 1, 'F', 92.5},    {"Cheng ling", 2, 'F', 87},    {"Wang ming", 3, 'M', 58}};</span>
结构体数组的使用也很简单,例如,获取“Wang ming”的成绩:

class[4].score;
结构体与指针:  难上加难,慎重

struct stu *p;   //定义了一个指向stu结构体的指针;struct stu stu1;p=&stu1;         //这样指针就指向了一个stu类型的变量stu1,请注意加&,要的是首地址。(取地址取得是结构体变量的地址,切记不可取变量成员的地址。

需要注意的是结构体变量的成员在内存中是连续存储的。

有了结构体指针,就可以获取结构体成员了,一般形式为:

(*结构指针变量).成员名
或者:
结构指针变量->成员名
例如:
(*pstu).num
或者:
pstu->num
注意(*pstu)两侧的括号不可少,因为成员符.的优先级高于*。如去掉括号写作*pstu.num,那么等效于*(pstu.num),这样意义就完全不对了。





0 0
原创粉丝点击