目录
一、概念、变量的定义
初识结构体
结构体顾名思义是一种构造类型,它是由若干个“成员”组成,其中的每个成员可以是基本类型的,也可以是构造类型的。如下图:
想要使用结构体,像函数一样,首先我们要做的就是对结构体的声明。声明结构体的格式有三种:
struct Fruit {
char name[5];
char colar[5];
char origin[5];
int price[5];
};
struct {
char name[5];
char colar[5];
char origin[5];
int price[5];
};
struct Fruit {
char name[5];
char colar[5];
char origin[5];
int price[5];
}fruit1;
结构体变量的定义、引用结构体类型的初始化
声明Fruit的结构体就是先声明结构体类型,再用struct Fruit定义结构体变量。
引用结构体的形式是:结构体变量名 . 成员名 fruit . cName="apple";
struct 结构体名{
成员列表
struct Fruit {
char name[5];
char colar[5];
char origin[5];
int price[5];
}fruit1 = { "apple","red","ShanDong",10; } //可以在定义结构体变量时指定初始值。
二、结构体的数组
认识结构体数组
当我们要存储多种水果的信息时,我们就需要用到结构体指针了。
定义一个结构体数组的方式与定义一个结构体变量的方式相同,只是将结构体变量替换成结构体数组。格式:
struct Fruit {
char name[5];
char colar[5];
char origin[5];
int price[5];
}fruit1[5];
同样的我们也可以先声明结构体类型,在当以结构体数组。
初始化结构体数组
同样的,在我们初始化结构体数组的时候,我们是如下格式:
struct Fruit {
char name[5];
char colar[5];
char origin[5];
int price[5];
}fruit1[5] = {{ "apple","red","ShanDong",10; },
{ "pear","yellow","ShanDong",9; },
{ "banana","yellow","GuangXi",20; },
{ "mango","yellow","GuangDOng",15; },
{ "lemon","yellow","ShanDong",11; }};
三、结构体指针
初识结构体指针
当我们想用其他函数来处理结构体时,我们就需要用到结构体指针了。定义结构体指针的格式如下:
结构体类型 *指针名;
struct Fruit *fruit1;
引用它的方法有两种:
(*fruit) . price=10;/*成员名,*fruit一定要带括号,因为点运算符的优先级时最高的,如果不使用括号,就会先执行点运算,再执行*运算*/
(*fruit)->price=10; //成员名,->就像是指针的图案,非常容易记忆
注:*fruit一定要带括号,因为点运算符的优先级时最高的,如果不使用括号,就会先执行点运算,再执行*运算
指向结构体数组的指针
指针指向结构体数组时,指针变量的值就是结构体数组的首地址。
结构体指针变量也可以直接指向结构体数组中的元素,这时指针变量的值就是该结构体数组元素的首地址。例如,定义一个结构体数组student[2],使用结构体指针指向该数组,代码如下:
struct Student* pStruct;
pStruct=student;//第一个元素
pStruct=&student[1];//需要带&符哦!
结构体作为函数参数
使用结构体作为函数参数有三种形式:
1.使用结构体变量作为函数参数
在使用结构体变量作为函数的实参时,采取的是”值传递“方式,他会将结构体所占内存单元的内容全部顺序传递给形参,形参也必须时同类型的结构体变量。
void Display(struct Student stu);
这种方式不但占用内存多,而且在函数内部修改变量中成员的值,改变的值不会返回到主函数中。
2.使用指向结构体变量的指针作为函数参数
只将结构体变量的首地址进行传递,并没有将变量的副本进行传递:
void Display(struct Student *stu);
这样的话,在函数内部修改变量中成员的值,改变的值就会返回到主函数中。
3.使用结构体变量的成员作为函数参数
使用这种方式为函数传递参数与普通的变量作为实参是一样的,采用的是”值传递“的方式!
Display(student.fScore[0]);
注意:在传值时,实参与形参的类型要一致哦!
四、包含结构的结构
这个顾名思义就时结构里的结构,就像是一个电脑,它由很多硬件组成,cpu、主板、硬盘之类的,这算是一层结构,而在每个成分又包含着结构,就像是cpu就是由寄存器、控制器、运算器和时钟组成。
今天的结构体就到这里:)