C++结构体

#include<iostream>
#include<string>
using namespace std;
struct Student//结构体定义
{
	string name;
	int age;
	int grade;
};
struct Teacher {
	string name;
	int age;
	Student student;
};
//结构体做函数参数 
//1. 值传递  形参的改变不会修改实参
void val(struct Teacher A) {
	cout << A.age << endl;
}
//2.地址传递  因为传递的是地址所以 形参的改变会修改实参
void adr(struct Teacher* A) {//为啥常用地址传递呢?因为每一次值传递都要复制一份空间,占内存;但是因为使用地址传递,会修改形参,所以就要用到const了,客官您往下看
	cout << A->name << endl;
}
//使用coust
void adr1(const struct Teacher* A) {
	A->age = "王大牛";//有coust 不可修改
	cout << A->name << endl;
}
int main() {
	//创建结构体变量
	struct Student s1;//此处struct可省略
	s1.age = 10;
	s1.name = "小美";
	s1.grade = 98;
	cout << "姓名 " << s1.name << "年龄 " << s1.age  << "成绩"  << s1.grade<<endl;

	struct Student stdarray[2];//结构体数组
	stdarray[0].age = 02;
	stdarray[0].name = "小花";
	stdarray[0].grade = 99;
	cout << "姓名 " << stdarray[0].name << " 年龄 " << stdarray[0].age << " 成绩 " << stdarray[0].grade<<endl;

	struct Student* s2=&s1;//结构体指针
	
	cout << "姓名 " << s2->name << " 年龄 " << s2->age << " 成绩 " << s2->grade;

	struct Teacher t;//结构体嵌套结构体
	t.age = 28;
	t.name = "赵铁柱";
	t.student.name = "赵大山";
	cout << "姓名 " << t.name << " 年龄 " << t.age << " 学生 " << t.student.name << endl;


	val(t);
	adr(&t);
}

注意两点

1.结构体做函数参数 时常用地址传递,因为传递的是地址所以 形参的改变会修改实参

1.1 值传递 形参的改变不会修改实参
void val(struct Teacher A) {
cout << A.age << endl;
}
1.2地址传递 因为传递的是地址所以 形参的改变会修改实参
void adr(struct Teacher* A) {但是因为使用地址传递,会修改形参,所以就要用到const了,客官您往下看
2.注意const的使用

因为传递的是地址所以 形参的改变会修改实参,所以就要用到const了,使用coust后就不能修改了

void adr1(const struct Teacher* A) {
	A->age = "王大牛";//有coust 不可修改
	cout << A->name << endl;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值