- 结构体:
- 结构体属于用户自定义的数据类型,允许用户存储不同的数据类型
- 自定义数据类型,一些类型集合组成的一个类型
- 定义语法:struct 结构体名 {结构体成员列表};
例:struct student
{
String name;
Int age;
};
- 通过结构体创建变量的方式有三种:
1、Struct 结构体 变量名;
给变量名属性赋值,通过”.”访问结构体变量中的属性
例:Struct Student s1;
s1.name=”张三”;
S1.age=18;
2、Struct 结构体 变量名={成员值1;成员值2};
例:Struct Student s1={“张三”,18};
3、在定义结构体时顺便创建结构体变量
例:struct student
{
String name;
Int age;
}s1;
Struct Student s1;
s1.name=”张三”;
S1.age=18;
- 注:结构体定义的时候必须写struct,结构体创建的时候可以不写struct。
- 结构体数组:
- 将自定义的结构体放入到数组中方便维护
- 创建语法:struct 结构体名 数组名[元素个数]={ {},{},{} };
例:struct student arr[3]=
{
{“张三”,12};
{“张二”,12};
{“张一”,12};
};
- 给结构体数组中的元素赋值:
例:arr[2].name=”张三”;
- 遍历结构体数组:
例:for(int i=0;i<3,i++)
{
Cout<<” ”<<arr[i].name<<” ”<<arr[i].age<<endl;
}
- 结构体指针:通过指针访问结构体中的成员。
- 利用操作符”->”可以通过结构体指针访问结构体属性。
- 创建结构体变量后,通过指针指向结构体变量:
例:Struct student *p=&s1;
- 创建结构体变量后,通过指针访问结构体变量中的数据:
例:P->name ;p->age;
- 结构体嵌套结构体(嵌套的结构体需写在前面):
- 作用:结构体中的成员可以是另一个结构体
例:struct teacher
{
String name;
Int age;
Struct student s1;
}
- 结构体做函数参数:
- 作用:将结构体作为参数想函数中传递
- 将函数中的形参改为指针,可以减少内存空间,而且不会复制新的副本出来
- 传递的方式:
- 值传递:形参变,实参不变;
例:printfStudent(struct student s)
{
//形参
Cout<<” ”<< s.name <<” ”<< s.age ;
}
- 地址传递:形参变,实参也变;
例:printfStudent(struct student *p)
{
//形参
Cout<<” ”<< p->name <<” ”<< p->age ;
}
- 结构体中const使用场景:
- 加上const后,一旦有修改的操作就会报错,可以防止我们误操作。
- 因为将函数中的形参改为指针,可以减少内存空间,而且不会复制新的副本出来(即 将值传递改为地址传递),但是函数在进行地址传递时,一旦形参改变,实参也会 发生改变,所以,为了方式实参改变,我们在进行地址传递时,在形参前加const, 保障实参不变。