前言
结构体主要用于数据类型多或者变量多的场合,比如最近在学stm32,那些寄存器就可以构成一个结构体,以后就可以操作结构体来操作寄存器,还有,比如要登记一个学生的信息,有姓名char型,学号int型,这些情况就需要用到结构体了。
数据类型创建
比如int整型,这个是已经创建好的数据类型。
在这里我们要创建我们自己的数据类型,创建一个结构体
结构体类型创建
struct student
{
int number;
char *name;
char sex;
};
这里可以看到我们创建了一个student类型的结构体,int类型的成员是不是就是整形,而我创建的结构体类型其成员有number,到时候可以存学号,再比如name这个成员到时候就可以存名字,sex性别。
定义
这里的struct是一个关键字,用来构建自己结构类型的关键字,不像int是一个类型,所以后面我们就可以把struct student整体当成int来看。
int类型的定义
int a;
定义了一个int整形类型的变量,变量名为a。
结构体定义一(常规定义):
struct student pupil1;
定义了一个stuct student结构体类型的变量,变量名为pupil1。
这一种定义可以说是与其他类型没有区别。
结构体初定义二(简便定义):
struct student
{
int number;
char *name;
char sex;
}pupil1;
构建结构体的时候定义。
结构体定义三(特殊定义):
struct
{
int number;
char *name;
char sex;
}pupil1;
这个没有名字的结构体叫做匿名结构体,你只能在结构体构建的时候给它定义,再后面你不能像struct student pupil1;这样来定义结构体变量了,这适用于特殊结构体。
赋值
结构体赋值和数组赋值相似。
数组赋值
int a[]={1,2,3};
结构体常规定义赋值
struct student pupil1={1,“lellansin”,‘m’};
简便定义赋值
struct student
{
int number;
char *name;
char sex;
}pupil1={1,“lellansin”,‘m’};
特殊定义赋值同简便定义
上面都是根据数组的简便赋值,还有其对应的单个数据赋值
数组单个数据赋值
a[0]=1;
a[1]=2;
a[2]=3;
结构体当个数据赋值
pupil1.number=1;
pupil1.name=“lellansin”;
pupil1.sex=‘m’;
结构体数组
结构体指针
其常见错误
描述就是不能把一个结构体字符数组装换为一个装换为一个结构体指针。
解决办法,强制装换
结构体作为参数和返回值
结构体函数
好的,其实理解结构体就是找其他变量进行比对。