C++ 结构体
2020-03-16 本文已影响0人
小潤澤
结构体简介
结构体是拥护自定义的数据类型,允许用户储存不同的数据类型
语法:struct 结构体名{结构体成员列表};
结构体创建变量的方式
1.struct结构体名 变量名
2.struct结构体名 变量名={成员1值,成员2值}
3.定义结构体时顺便创建变量
定义结构体
#include<iostream>
using namespace std;
#include<string>
struct Student
{
//成员列表
//姓名
string name;
//年龄
int age;
//分数
int score;
};
int main(){
//创建具体学生
//方法一
struct Student s1;
//通过.来访问
s1.name = "张三";
s1.age = 18;
s1.score = 100;
cout<<"姓名: "<<s1.name<<"年龄: "<<s1.age<<"分数: "<<s1.score<<end1;
//方法二
struct Student s2 = { "李四" ,19 , 80 };
cout<<"姓名: "<<s2.name<<"年龄: "<<s2.age<<"分数: "<<s2.score<<end1;
system("pause");
return 0;
}
那么第三种穿件结构体的方法是
#include<iostream>
using namespace std;
#include<string>
struct Student
{
//成员列表
//姓名
string name;
//年龄
int age;
//分数
int score;
}s3;
int main(){
//创建具体学生
//方法三
s3.name = "王五";
s3.age = 20;
s3.score = 60;
cout<<"姓名: "<<s3.name<<"年龄: "<<s3.age<<"分数: "<<s3.score<<end1;
system("pause");
return 0;
}
在定义结构体的时候顺便建立属性
结构体数组
结构体的数组的作用是将自定义结构体放到数组里面做存储
#include<iostream>
using namespace std;
#include<string>
//定义结构体
struct Student
{
//成员列表
//姓名
string name;
//年龄
int age;
//分数
int score;
};
int main(){
//创建结构体数组
struct Student stuArray[3] =
{
{"张三" ,18 , 100},
{"李四" ,28 , 99},
{"王五" , 38 , 66}
};
//赋值
stuArray[2].name = "赵六";
stuArray[2].age = 80;
stuArray[2].score = 60;
//遍历结构体数组
for (int i = 0; i < 3;i++)
{
cout<<"姓名: "<<stuArray[i].name
<<"年龄: "<<stuArray[i].age
<<"分数: "<<stuArray[i].score<<end1;
}
system("pause");
return 0;
}
结构体指针
通过指针访问结构体成员
#include<iostream>
using namespace std;
#include<string>
//定义结构体
struct Student
{
//成员列表
//姓名
string name;
//年龄
int age;
//分数
int score;
};
int main(){
struct Student s = {"张三" , 18, 100 };
//通过指针只想结构体变量
Student *p = &s;
//通过指针访问结构体变量内的数据
cout<<"姓名: "<<p->name<<"年龄: "<<p->age<<"分数: "<<p->score<<end1;
system("pause");
return 0;
}
结构体嵌套
即结构体成员是另一个结构体
#include<iostream>
using namespace std;
#include<string>
//定义结构体
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.score = 60;
cout<<"老师姓名: "<<t.name<<"老师编号: "<<t.id<,"老师年龄: "<<t.age<<"老师的辅导学生姓名: "<<t.stu.name<<"学生年龄: "<<t.stu.age<<"学生考试分数为: "<<t.stu.score;
system("pause");
return 0;
}
结构体做函数参数
作用是结构体作为参数向函数传递
我们首先看下值传递
#include<iostream>
using namespace std;
#include<string>
struct student
{
//成员列表
//姓名
string name;
//年龄
int age;
//分数
int score;
};
void printStudent1(struct student s)
{
cout<<"子函数1姓名: "<<s.name<<"年龄: "<<s.age<<"分数: "<<s.score<<end1;
}
int main(){
//创建具体学生
struct student s;
s.name = "张三";
s.age = 20;
s.score = 85;
printStudent1(s);
system("pause");
return 0;
}
地址传递
#include<iostream>
using namespace std;
#include<string>
struct student
{
//成员列表
//姓名
string name;
//年龄
int age;
//分数
int score;
};
void printStudent2(struct student *p)
{
cout<<"子函数2姓名: "<<p->name<<"年龄: "<<p->age<<"分数: "<<p->score<<end1;
}
int main(){
//创建具体学生
struct student s;
s.name = "张三";
s.age = 20;
s.score = 85;
printStudent2(&s);
system("pause");
return 0;
我们可以通过void printStudent2(const student p)来防止误操作