【C++】结构体/结构体数组/结构体指针/结构体嵌套/函数参数/const
一、结构体声明
struct Student
{
//成员列表
string name;
int age;
int score;
}; //s3;定义时直接声明
int main()
{
struct Student s1;
//法一、直接赋值
s1.name = "Apple";
s1.age = 10;
//法二、直接声明
struct Student s2 = {"Banana", 19, 80}; //不可跳着声明
}
二、结构体数组
//创建结构体数组
int main()
{
struct Student stuArray[3] =
{
{"Apple", 19, 80},
{"Banana", 18, 99},
{"Cat", 17, 70}
}; //注意逗号,分号的位置
}
//给结构数组中赋值
int main()
{
struct Student stuArray[3] =
{
{"Apple", 19, 80},
{"Banana", 18, 99},
{"Cat", 17, 70}
};
stuArray[0].name = "Dog";
cout << stuArray[0].name << stuArray[0].score <<endl;
system("pause");
}
//遍历结构体数组:for循环
三、结构体指针
int main()
{
struct Student stuArray[3] =
{
{"Apple", 19, 80},
{"Banana", 18, 99},
{"Cat", 17, 70}
};
stuArray[0].name = "Dog";
cout << stuArray[0].name << stuArray[0].score <<endl;
//结构体指针
Student* p = &stuArray[0]; //定义
int a = p -> score; //访问 ->
cout << a <<endl;
system("pause");
}
四、结构体嵌套结构体
struct Student
{
//成员列表
string name;
int age;
int score;
};
struct Teacher
{
int id;
string name;
int age;
struct Student stu;
};
五、结构体作为函数参数
结构体作为函数参数有值传递和地址传递两种。
#include <iostream>
#include <stdlib.h>
using namespace std;
struct Student
{
//成员列表
string name;
int age;
int score;
};
//值传递
void printStudent(struct Student s)
{
s.name = "Banana";
cout << "name: " << s.name << "age: " << s.age << "score: " << s.score <<endl;
}
//地址传递
void printStudent2(struct Student* p)
{
//p->name = "Banana";
cout << "name: " << p->name << "age: " << p->age << "score: " << p->score << endl;
}
int main()
{
struct Student s;
s = {"Apple", 20, 89};
printStudent(s);
struct Student* p = &s;
printStudent2(p);
cout << "name: " << p->name << "age: " << p->age << "score: " << p->score << endl;
system("pause");
}
六、结构体中使用const场景
用于防止误操作。
因为值传递浪费空间,所以一般使用地址传递。
如果函数使用了地址传递,函数内操作会改变实参值,为了防止实参被乱修改,使用const。


用于设置只能读不能写。
【C++】结构体/结构体数组/结构体指针/结构体嵌套/函数参数/const的更多相关文章
- C#结构体和字节数组的转换函数
在通信过程中,一般我们都会操作到字节数组.特别是希望在不同语言编程进行操作的时候. 虽然C#提供了序列化的支持,不用字节数组也行.但操作字节数组肯定会碰到. 一般都会采用结构来表示字节数组.但结构 ...
- C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com
原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...
- 深入理解指针—>结构体里的成员数组和指针
单看这文章的标题,你可能会觉得好像没什么意思.你先别下这个结论,相信这篇文章会对你理解C语言有帮助.这篇文章产生的背景是在微博上,看到@Laruence同学出了一个关于C语言的题,微博链接.微博截图如 ...
- c动态分配结构体二维数组
这个问题我纠结了蛮久了,因为前面一直忙(自己也懒了点),所以没有能好好研究这个.希望这篇文章能够帮助你们. #include <stdio.h> #include <stdlib.h ...
- NumPy-快速处理数据--ndarray对象--多维数组的存取、结构体数组存取、内存对齐、Numpy内存结构
本文摘自<用Python做科学计算>,版权归原作者所有. 上一篇讲到:NumPy-快速处理数据--ndarray对象--数组的创建和存取 接下来接着介绍多维数组的存取.结构体数组存取.内存 ...
- c#中关于结构体和字节数组转化
最近在使用结构体与字节数组转化来实现socket间数据传输.现在开始整理一下.对于Marshal可以查阅msdn,关于字节数组与结构体转代码如下: using System; using System ...
- c结构体里的数组与指针
/* 訪问成员数组名事实上得到的是数组的相对地址.而訪问成员指针事实上是相对地址里的内容 */ struct buf_str { int length; char buf[0]; }; struct ...
- 【VS开发】【编程开发】【C/C++开发】结构体中的数组与指针的内存分配情况说明
[VS开发][编程开发][C/C++开发]结构体中的数组与指针的内存分配情况说明 标签:[VS开发] [编程开发] 主要是疑惑在结构体定义的数组的内存空间与指针动态分配的内存空间,在地址上连续性.以及 ...
- C语言--- 高级指针2(结构体指针,数组作为函数参数)
一.结构体指针 1. 什么是结构体指针?指向结构体变量的指针 结构体: typedef struct stu{ char name[ ...
随机推荐
- Idea tomcat debug按钮灰色无法运行
打开Project Structure 2.选中src,点击按钮关闭界面,重启idea即可
- FZU ICPC 2020 寒假训练 4 —— 模拟(一)
P1042 乒乓球 题目背景 国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及.其中11分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役.华华 ...
- [noi239]count
将每一个ai表示为$ai=ki\cdot m+ri$,即满足$m\sum ki+\sum ri=n$且$0<ri<m$枚举$S=\sum ri$(S范围是$k\le S\le k(m-1) ...
- 前端:WebP自适应实践
WebP介绍 WebP 是 Google 推出的一种同时提供了有损和无损两种压缩方式的图片格式,优势体现在其优秀的图像压缩算法,能够带来更小的图片体积,同时拥有更高的的图像质量.根据官方说明,WebP ...
- SQL 跨实例操作
SQL 跨实例操作 我使用的是 OpenDataSource 函数,假设你要在其他机器上访问 192.168.0.1 上的数据库: SELECT A.[Name], B.[SkillName], B. ...
- 『学了就忘』Linux文件系统管理 — 60、Linux中配置自动挂载
目录 1.自动挂载 2.如何查询系统下每个分区的UUID 3.配置自动挂载 4./etc/fstab文件修复 上一篇文章我们说明了手动分区讲解,对一块新硬盘进行了手动分区和挂载. 但是我们发现重启系统 ...
- Codeforces 1383E - Strange Operation(线段树优化 DP or 单调栈+DP)
Codeforces 题目传送门 & 洛谷题目传送门 Yet another 自己搞出来的难度 \(\ge 2800\) 的题 介绍一个奇奇怪怪的 \(n\log n\) 的做法.首先特判掉字 ...
- DirectX12 3D 游戏开发与实战第九章内容(下)
仅供个人学习使用,请勿转载.谢谢! 9.纹理贴图 学习目标 学习如何将局部纹理映射到网格三角形中 探究如何创建和启用纹理 学会如何通过纹理过滤来创建更加平滑的图像 探索如何使用寻址模式来进行多次贴图 ...
- 微前端框架 single-spa 技术分析
在理解微前端技术原理中我们介绍了微前端的概念和核心技术原理.本篇我们结合目前业内主流的微前端实现 single-spa 来说明在生产实践中是如何实现微前端的. single-spa 的文档略显凌乱,概 ...
- 如何使用scp在Linux服务器的后台传输文件?
目录 一.上传 常规操作 建议 后台运行 二.下载 两台服务器间文件如何传输?对于小文件,可以先从Linux服务器传到window,再传到另一台服务器.对于大的文件,如测序数据.比对文件等.这样的方法 ...