【自用】C++-结构体-Day6

上次学习了指针的应用中关于指针在数组和函数中的应用。昨天学习了结构体相关知识,今天复盘一下。

    引言:在最初的学习中我们已经知道数据类型可以分为很多种,常见的有int型,char型等。那在实际的项目中我们可能会出现需要自己创建数据类型的时候。或者我们想同时使用好几种数据类型,这时候就用到了结构体,结构体最大的作用就是对多种数据类型进行封装。

结构体的声明:比如我们想录入一整个学生信息表,那一条学生信息中包含学生的姓名,年纪,性别,成绩等各个特征之间是不同的数据类型,我们可以使用结构体进行封装,使操作更加便捷。

结构体声明如下

struct student{    //struct是必须要写的,student是你需要定义的结构体类型的名字,自己起就行
	string name;   //大括号中写下自己需要封装的几种变量类型及名称,以分号区分开。注意名字是字符串类型
	int age;
	int score;
};

结构体的引用:有了以上结构体声明,那我们怎么引用这个结构体呢?之前的学习中我们知道定义一个int型变量的可以写作int a=20;仿照这个形式,我们可以写student S1={"张三”,24,87},具体看如下代码

#include<iostream>
#include<string>
using namespace std;//因为使用了string所以要加这个头文件
struct student{
	string name;
	int age;
	int score;
};  //在主函数外面写结构体声明
int main() {
	student S1 = { "二狗",15,6 };//定义一个叫S1的类型为student的结构体
	cout << "姓名为:" << S1.name << " 年龄为:" << S1.age << " 分数为:" << S1.score << endl;
}

运行代码后结果如下:

 

结构体与数组:上面我们可以看到已经成功地声明了一个名字为S1类型为student的结构体变量,也输出了一个学生的基本信息,假如有一百个学生我每次都命名从S1-S100未免也太麻烦了些。所以采用下面的方式,前面的声明部分不用改变,就在后面定义部分改变就可以了。代码如下

#include<iostream>
#include<string>
using namespace std;
struct student{
	string name;
	int age;
	int score;
};//前面声明部分不用改变
	
int main() {
	struct student arr[3]{
		{ "张三",18,100 },
	{ "张四", 28, 100 },
	{ "张五", 18, 190 }
	};
	for (int i = 0; i < 3; i++) {//使用for循环输出数组中的学生信息
		cout << "姓名:" << arr[i].name << " 年龄:" << arr[i].age << " 分数:" << arr[i].score << endl;
	}
	
	system("pause");
}

输出结果如下:

嵌套结构体:在实际使用过程中还会出现一种情况就是需要两个结构体嵌套使用,比如一个老师的基本信息中需要包含所教学生的信息。具体代码如下:

#include<iostream>
#include<string>
using namespace std;
struct student {
	string name;
	int age;
	int score;
};//按照原来的方式声明结构体,分别把需要用到的老师和学生的结构体都声明
struct teacher {
	string name;
	int age;
	struct student s1;//定义一个类型为student的名叫S1的
};//因为老师的结构体声明中引用的学生的,使用学生的声明要在老师的前面
int main() {
	teacher t;//定义一个名字叫t的类型为teacher的结构体变量
	t.name = "张一";
	t.age = 67;
	t.s1.name = "二狗";
	t.s1.age = 15;
	t.s1.score = 6;
	cout << "一个" << t.age << "岁" << "叫" << t.name << "的老头" << "教了一个叫" << t.s1.name << "的" << t.s1.age << "岁小孩,考试就考了" << t.s1.score <<"分" << endl;

}

运行结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值