当前位置: 首页 > article >正文

【C++笔记】八、结构体 [ 3 ]

8.5 结构体 嵌套 结构体

作用: 结构体中的成员可以是另一个结构体

  • 先定义 子结构体 (内层结构体)
  • 再定义 母结构体 (外层结构体)
#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.stu.name << " 学生年龄: " << t.stu.age 
		<< " 学生考试分数: " << t.stu.score<<endl;

	system("pause");
	return 0;
}

8.6 结构体做函数参数

作用 : 将结构体作为参数向函数中传递

传递方式有两种:

  1. 值传递
  2. 地址传递
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
#include<string>

//定义学生结构体
struct student
{
	string name;//姓名
	//年龄
	int age;
	//分数
	int score;
};

//打印学生信息函数
//1. 值传递
void printStudent1(struct student s)
{
	s.age = 100;//改变函数内部值, 看外部是否改变
	cout << "子函数1中打印 姓名: " << s.name << " 年龄: " << s.age << " 分数: " << s.score << endl;
}

//2. 地址传递
void printStudent2(struct student *p) {
	p->age = 200;//改变函数内部值, 看外部是否改变
	cout << "子函数2中打印 姓名: " << p->name << " 年龄: " << p->age << " 分数: " << p->score << endl;
	//注意指针要用->访问
}

int main() {
	//结构体做函数参数
	//将学生传入到一个参数中,打印学生身上的所有信息

	//创建结构体变量
	struct student s;
	s.name = "张三";
	s.age = 20;
	s.score = 85;

	printStudent1(s);
	printStudent2(&s);
	cout << "main函数中打印 姓名: " << s.name << "年龄: " << s.age << "分数: " << s.score << endl;

}

总结: 如果不想修改主函数中的数据,用值传递,反之用地址传递


http://www.kler.cn/news/311682.html

相关文章:

  • 如何着手创建企业数据目录?(一)数据目录的设定
  • python 实现area under curve曲线下面积算法
  • libserailport交叉编译适配说明
  • 胤娲科技:解锁AI奥秘——产品经理的智能进化之旅
  • 【每天学点AI】一个例子带你了解Python装饰器到底在干嘛!
  • C语言中的一些小知识(二)
  • Android 恢复挑战和解决方案:如何从 Android 设备恢复删除的文件
  • 算法题总结(三)——滑动窗口
  • MySql的基础讲解
  • Fisco Bcos 2.11.0配置console控制台2.10.0及部署调用智能合约
  • SpringAI-基于java大模型的胡言乱语
  • 正则表达式获取某些字段
  • docker快速搭建kafka
  • 【C++ Primer Plus习题】16.9
  • ATGM331C-5T杭州中科微BDS/GNSS全星座定位授时模块应用领域
  • 数据结构---二叉树例题讲解
  • 基于深度学习的手势识别算法(论文复现)
  • Vue使用组件需要加前缀而React使用组件库的区别
  • 单片机毕业设计基于单片机寻迹巡线避障智能小车系统设计
  • .NET 一直跻身 30 大Github最活跃开源项目之列。
  • JDK自带的序列化
  • sqli-labs靶场搭建
  • 鸿蒙OpenHarmony【轻量系统芯片移植案例】标准系统方案之瑞芯微RK3566移植案例
  • Datawhile 组队学习Tiny-universe Task01
  • 数据结构-2.8.单链表的建立
  • 【Spring】IocDI详解(6)
  • VMWare17.5.2中Windows7企业版安装VMWareTools失败及解决办法
  • stm32单片机个人学习笔记3(GPIO输出)
  • Python 正则表达式详解:从基础匹配到高级应用
  • 华为OD机试 - 构成指定长度字符串的个数(Python/JS/C/C++ 2024 E卷 100分)