结构体
结构体基本概念
结构体属于自定义的数据类型, 允许用户存储不同的数据类型
结构体的定义和使用
语法: struct 结构体名 {结构体成员列表};
通过结构体创建变量的方式有三种;
· struct 结构体名 变量名
· struct 结构体名 变量名 = {成员1值,成员2值。。}
· 定义结构体时顺便创建变量
struct students
{
//成员列表;
string name;
int age;
int score;
}
//创建变量//创建变量时 struct 可以省略
struct student s1;
struct student s2 = {.......}
struct student{
......
......
......
}s3;
结构体数组
作用: 将自定义的结构体放入到数组中方便维护
语法: struct 结构体名 数组名[元素个数] = { {},{},。。}
实例:
//结构体定义
struct student
{
//成员列表
string name;
int age;
int score;
}
int main(){
//结构体数组
struct student arr[3] =
{
{"张三",18,80},
{"李四",19,60},
{"王五",20,90}
}
return 0;
}
结构体指针
作用: 通过指针访问结构体中的成员
· 利用操作符 -> 可以通过结构体指针访问结构体属性
实例:
//结构体定义
struct student
{
//成员列表
string name;
int age;
int score;
}
int main() {
struct students stu = {"张三",18,100}
struct students *p = &atu;
cout<<p->name<<endl;//输出姓名
}
结构体嵌套结构体
作用: 结构体中的成员可以是另一个结构体
实例:
//定义学生结构体
struct student
{
string name;
int age;
int score;
}
//定义一个老师的结构体
struct teacher
{
int id;
string name;
int age;
struct student stu;//嵌套的结构体
}
int main(){
teacher t;
t.id = 10000;
t.name = "老王";
t.age = 50;
t.stu.name = "小王";
t.stu.age = 20;
t.stu.acore = 60;
//可以输出;
}
结构体做函数参数
实例:
//结构体做函数的参数
//将学生传入一个参数中,打印学生身上的所有信息
//创建结构体变量
struct student s;
s.name = "网三";
s.age = 18;
s.score = 90;
//值传递
void printstudnet(struct student s)
{
cout<<s.mane<<s.age<<s.score<<endl;
}
//地址传递
void printstudent2(struct stident * p)
{
cout<<s->name<<s->age<<s->score<<endl;
}
结构体中const使用场景
作用: 用const 来防止误操作
实例:
//通过函数来打印结构体变量信息
void printstudent(const student *s)//地址传递节省空间
//加入const 以后一旦有修改的操作就会报错;