结构体的定义

通过前面的学习,我们可以用一个数据类型加变量表示一个属性,但是当表示多个属性时,一个基本数据类型就不能表示了,此时就可以用到结构体来将多个属性进行存储。

语法:

struct 结构体名称
{
成员变量1;
成员变量2;
成员变量3;
...
成员变量n;
};

示例:用结构体表示学生的名字、性别、年龄、电话。

struct student{
		char name[32];
		char sex;
		int age;
		char tel[12];
};

结构体变量的定义

可通过以下几种方式进行定义:

  • struct 结构体名称 变量名;
    可通过将结构体和变量名进行联用,相当于定义一个数据类型 变量名,跟我们定义一个属性时是一样的,因为我们说过结构体也是一种数据类型,并且还可以通过以下方式进行定义。
  • struct 结构体名称 *变量名; >>>通过指针进行定义。
  • struct 结构体名称 变量名[长度]; >>>通过数组进行定义。

扩展:

除了上述的定于方法,结构体的定义还支持以下这个方式进行定义。语法:

struct {
成员变量1;
成员变量2;
...
成员变量3;
}结构体变量1,结构体变量2,结构体变量3;

示例:

struct {
int age;
}A,B,C;
// 这里的A,B,C是结构体变量

这种结构的定义并不是很常用,了解即可。

结构体中成员变量的初始化

  • 第一种:通过位置进行初始化
struct student s = {
"lisi",
"男"
18,
"12345678910"
};

这种初始化方法在进行初始化时,他的初始化值类型必须和定义结构体变量的定义顺序一样。

  • 第二种:通过变量名前面加句点符号进行初始化
struct student s = {
.name = "lisi",
.sex = "男",
.age = 18,
.tel = "12345678910";
};

结构体种成员变量的访问

  • 通过句点符号进行访问,这里的结构体变量必须是普通变量或者数组。
    s.age、s.sex、s.name、s.tel

  • 通过->进行访问,这里的结构体变量时指针变量
    struct student *p = &s1;这里的s1是一个完成初始化的普通结构体,可通过以下方式进行操作:
    1)下标法:p[i].成员变量
    2)指针法:(*(p+1)).成员变量
    3)指向操作符

结构体的重新定义

使用typedef关键字对结构体进行重新定义,语法:

typedef struct student{
成员变量1;
成员变量2;
成员变量3;
...
成员变量n;
}新类型1*新类型2;

这里可以通过 新类型1 变量名1 或者 新类型2 指针变量名进行定义。

05-27 14:33