C++结构体

第二章 C++结构体


1.结构体定义和使用

语法:struct 结构体名 { 结构体成员列表 };

通过结构体创建变量的方式有三种:

  • struct 结构体名 变量名
  • struct 结构体名 变量名 = { 成员1值 , 成员2值…}
  • 定义结构体时顺便创建变量
//.cpp
#include "structuralMessage.h"
#include <iostream>
#include <string>
template<typename T, size_t N>
char(&ArraySizeHelper(const T(&array)[N]))[N];
#define ARRAY_SIZE(array) (sizeof(ArraySizeHelper(array)))
using namespace std;
struct Teacher{string code;string type;
}teacher;
void structuralDefinition(){student s1={"张三",20,100000};student s2;s2.age=300;s2.name="金丹修士";s2.score=1;putMessage(s1);putMessage(s2);teacher.code="鸿蒙老祖";teacher.type="修仙";cout<<teacher.type<<"\t"<<teacher.code<<endl;
}
void putMessage(student stuL){cout<<"姓名:"<<stuL.name<<"\t年龄:"<<stuL.age<<"\t英语成绩:"<<stuL.score<<endl;
}
//.h
#include <string>
using namespace std;
struct student{string name;int age;int score;
};class structuralMessage {};
void structuralDefinition();
void putMessage(student stuL);

2.结构体数组

struct 结构体名 数组名[元素个数] = { {} , {} , … {} }

student arr[]={{"李逍遥",24,12},{"灵儿",23,120},{"茂茂",26,1}};//auto可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型,类似的关键字还有decltype。for (auto & i : arr){cout << "姓名:" << i.name << " \t年龄:" << i.age<< " \t分数:" << i.score << endl;}

3.结构体指针

可以通过定义一个结构体指针指向这个结构体的一个对象。
利用操作符 ->可以通过结构体指针访问结构体属性。

//结构体指针
void structPointer(){student stu={"张三",20,100000};//定义结构体指针student *p=&stu;cout<<p->name<<endl;
}

4.结构体嵌套结构体

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

struct student{string name;int age;int score;
};
struct Teacher{string code;string type;struct student stu;
};
//结构体嵌套结构体
void structNesting(){Teacher ToNi[]={{"球球","炼丹",{"小孟",14,58}},{"冷萌","炼器",{"萧炎",12,80}},{"球球","炼丹",{"小花",13,57}},};for(auto &i:ToNi){if(i.code=="球球") {cout << "教师 职工姓名: " << i.code << " \t教授科目: " << i.type << endl;cout << "辅导学员 姓名: " << i.stu.name << " \t年龄:" << i.stu.age << " \t考试分数: " << i.stu.score << endl;}}
}

5.结构体做函数参数

传递方式有两种:

  • 值传递
  • 地址传递
//如果不想修改主函数中的数据,用值传递,反之用地址传递
void putMessage(student stuL){cout << "姓名:" << stuL.name << "\t年龄:" << stuL.age << "\t英语成绩:" << stuL.score << endl;
}
void putMessageTwo(student *stuL){stuL->score=100;cout<<"姓名:"<<stuL->name<<"\t年龄:"<<stuL->age<<"\t英语成绩:"<<stuL->score<<endl;
}

C++结构体 结构体定义和使用、结构体数组、结构体指针、结构体嵌套结构体、结构体做函数参数相关推荐

  1. c/c++教程 - 1.10 结构体 使用typedef定义struct结构体 结构体数组 结构体指针 结构体嵌套 结构体做函数参数 结构体const

    十二.结构体 (1)结构体定义和使用 基本概念:结构体属于用户自定义的数据类型,允许用户存储不同的数据类型. 参考视频:https://www.bilibili.com/video/BV1et411b ...

  2. C++ 基础入门 之 结构体/结构体定义和使用/结构体数组/结构体指针/ 结构体嵌套结构体/结构体做函数参数/结构体中 const 使用场景/结构体案例

    C++ 基础入门 之 结构体/结构体定义和使用/结构体数组/结构体指针/ 结构体嵌套结构体/结构体做函数参数/结构体中 const 使用场景/结构体案例 目录 一.简单介绍 二.结构体定义和使用 三. ...

  3. 【C++】结构体 - 定义和使用,结构体数组,结构体指针,结构体嵌套结构体,结构体做函数参数,结构体 const

    文章目录 1. 定义和使用 2. 结构体数组 3. 结构体指针 4. 结构体嵌套结构体 5. 结构体做函数参数 6. 结构体 const 1. 定义和使用 结构体属于用户自定义的数据类型,允许用户存储 ...

  4. c++结构体总结(结构体定义,结构体数组,结构体指针,结构体嵌套结构体,结构体做函数参数,结构体中 const使用场景)

    看完b站黑马程序员之后的借鉴和笔记 1.什么是结构体,有什么作用? 在C/C++中,结构体是用户定义的数据类型.它可以把几种不同类型的数据项集合成结构体这样一个单一类型. 2. 结构体定义和使用 #i ...

  5. 结构体05:结构体做函数参数

    #include<iostream> #include<string> using namespace std;//定义结构体 struct Student{string na ...

  6. C++结构体(结构体创建,结构体数组,结构体指针,结构体嵌套结构体,结构体做函数参数,const变量使用)

    C++结构体(结构体创建,结构体数组,结构体指针,结构体嵌套结构体,结构体做函数参数,const变量使用) 目录 C++结构体(结构体创建,结构体数组,结构体指针,结构体嵌套结构体,结构体做函数参数, ...

  7. c语言 结构体指针做函数参数

    demo:修改某个学生的成绩 不利用指针直接在主函数内修改学生成绩的代码: #include <stdio.h> #include <string.h> #define N 5 ...

  8. 【C语言入门教程】7.1 结构体类型变量的定义和引用

    前面学习了变量和数组这些简单的数据结构,它们的特点是必须使用规定的数据类型.例如数组被定义为整型后,它的所有存储单元都是由整型构成.现实生活中某一类事物的共同属性可能是由不同的数据类型组成的集合,或者 ...

  9. Go 分布式学习利器(9)-- Go语言 结构体的行为定义和实现

    文章目录 1. Go语言的结构体 -- 数据成员的封装 2. Go (函数成员)行为的定义和实现 1. Go语言的结构体 – 数据成员的封装 Go语言官方给的描述是 既是面向对象语言,也不算面向对象语 ...

最新文章

  1. 全球13个DNS根+主要省份城市的DNS服务器地址
  2. python 函数调用列表_在项目列表上调用一个函数的最简洁方法 - python
  3. 《Imperfect C++中文版》——2.1 对象生命周期
  4. linux 网站架构的演变
  5. 软件开发管理的十大工作任务(FROM 栾跃)
  6. (传送门)JVM的GC日志的主要参数
  7. * Linux相关命令
  8. 关于权限五张表的独到见解
  9. c++ string 头文件_“延期不延学” 第25期 | C++篇 | C/C++常用函数
  10. Android攻城狮GestureDetector和GestureOverlayView
  11. C#中的where泛型约束中的new()使用(转)
  12. 机器学习面试题(part3)
  13. 12.混淆——数字音频采样,混淆,反混淆,脉冲序列_2
  14. 无法删除文件提示找不到指定文件导致文件无法删除的解决方法
  15. RxSwift中Observable的各种创建方法
  16. 利用matlab写一个简单的拉普拉斯变换提取图像边缘
  17. oracle select between and,oracle中的between和and的问题 | 学步园
  18. MedPy医学图像评价的python库
  19. Junit4 安装与使用(IDEA)
  20. Unity TileMap 2D 工具基础教程

热门文章

  1. WPF——ContentPresenter
  2. FM非相干解调原理及Keil代码
  3. 华为e353无线网卡linux驱动,华为 E353驱动
  4. 【BP预测】基于差分进化算法优化BP神经网络实现汇率数据预测matlab代码​
  5. WiFi路由器SRRC认证需要准备什么资料?
  6. 结构化数据、非结构化数据、数据清洗等概念
  7. python数学建模(四)微分方程模型
  8. 转载 仿微信表情与软键盘冲突
  9. 营改增后计算机 维护费税率,“营改增”后各行业税率及征收率一览-中华会计网校...
  10. java 打印日志log_java打印log日志