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

【C++】结构体(下)

4、结构体指针

作用:通过指针访问结构体中的成员

利用操作符“----->”可以通过结构体指针访问结构体成员。

示例:

#include<iostream>
#include<string>
using namespace std;
struct  student
{
	//姓名
	string name;
	//年龄
	int age;
	//分数
	int score;
};
int main()
{
	student stu = { "张三",18,100 };
	struct student* p = &stu;
	cout << "姓名:" << p->name
	<< "  年龄:" << p->age
	<< "  分数:" << p->score << endl;


	system("pause");
	return 0;
}

结果:

总结:结构体指针可以通过---->操作符来访问结构体中的成员。

5、结构体嵌套结构体

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

例如:每个老师可以辅导一个学员,一个老师的结构体中,记录一个学员的结构体,则此时就是结构体嵌套结构体。

示例:

#include<iostream>
#include<string>
using namespace std;
//学生结构体定义
struct  student
{
	//姓名
	string name;
	//年龄
	int age;
	//分数
	int score;
};
//老师结构体定义
struct  teacher
{
	int id;
	string name;
	int age;
	struct  student  stu;

};
int main()
{
	struct teacher  t1;
	t1.age = 26;
	t1.id = 1003;
	t1.stu.age = 19;
	t1.stu.name = "zhangsan";
	t1.stu.score = 98;
	system("pause");
	return 0;
}

6、结构体做函数参数

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

参数的传递方式有两种:一是值传递,二是地址传递。

二者的区别是:值传递形参的改变不会改变实参,而地址传递形参的改变可以导致实参的改变。

示例:

#include<iostream>
#include<string>
using namespace std;
struct  student
{
	string name;
	int age;
	int score;
};
//值传递
void printStudent(student stu)
{
	stu.age = 28;
	cout << "子函数中姓名:" << stu.name
		<< " 年龄:" << stu.age
		<< "  分数:" << stu.score << endl;

}
//地址传递
void  printStudent2(student* stu)
{
	stu->age = 28;
	cout << "子函数中姓名:" << stu->name
		<< " 年龄:" << stu->age
		<< "  分数:" << stu->score << endl;
}
int main()
{
	student  stu = { "张三",18,100 };
	//值传递
	printStudent(stu);
	//地址传递
	printStudent2(&stu);
	system("pause");
	return 0;
}

7、结构体中const使用场景

作用:用const来防止误操作。

示例:

#include<iostream>
#include<string>
using namespace std;
struct  student
{
	string name;
	int age;
	int score;
};

//地址传递
void  printStudent2(const student* stu)
{
	//stu->age = 28;//操作失败,因为加了const修饰
	cout << "子函数中姓名:" << stu->name
		<< " 年龄:" << stu->age
		<< "  分数:" << stu->score << endl;
}
int main()
{
	student  stu = { "张三",18,100 };
	//地址传递
	printStudent2(&stu);
	system("pause");
	return 0;
}


http://www.kler.cn/a/510706.html

相关文章:

  • 综述:大语言模型在机器人导航中的最新进展!
  • VIVADO FIFO (同步和异步) IP 核详细使用配置步骤
  • 医院挂号就诊系统设计与实现(代码+数据库+LW)
  • Mockito+PowerMock+Junit单元测试
  • mysql_real_connect的概念和使用案例
  • Node.js 到底是什么
  • 【专题二 二叉树中的深搜】98. 验证二叉搜索树
  • 免费使用 Adobe 和 JetBrains 软件的秘密
  • 【Linux系统编程】—— 进程与进程管理在Linux中的基本概念
  • AI 行业新动态
  • 1.13-1.19
  • 【Spring Boot】掌握 Spring 事务:隔离级别与传播机制解读与应用
  • 数据结构(Java版)第十期:栈和队列(一)
  • 【Django】多个APP设置独立的URL
  • 基于ChatGPT的论文写作辅助工具研究
  • AI 编程工具—Cursor AI 对话模式详解 内嵌对话模式
  • 【C语言】_自定义类型:联合体
  • 国产编辑器EverEdit -重复行
  • 第4章:Python TDD消除重复与降低依赖实践
  • 深度学习python基础(第一节) 变量和数据类型
  • 设计微服务的过程
  • 从Cursor到Replit Agent:AI编程技术全面综述
  • 【Python】endote参考文献格式获取,从PubMed
  • Next.js 实战 (八):使用 Lodash 打包构建产生的“坑”?
  • 【NLP高频面题】LSTM的前向计算如何进行加速?
  • 遥感应用论文精选