看完b站黑马程序员之后的借鉴和笔记

1.什么是结构体,有什么作用?

在C/C++中,结构体是用户定义的数据类型它可以把几种不同类型的数据项集合成结构体这样一个单一类型

2. 结构体定义和使用

#include<iostream>
#include<string>
using namespace std;
struct student
{
//成员列表string name;  //姓名int age;      //年龄int score;    //分数
}
struct Student2
{string name;int age;int score;
}s3; //注意:第三种创建方式时,这里要标记以下
int main() {//结构体变量创建方式1struct student s1; //struct 关键字可以省略s1.name = "张三";s1.age = 18;s1.score = 100;cout << "name=" << s1.name << "  age=" << s1.age << "  score=" << s1.score << endl;//结构体变量创建方式2Student s2 = {"王五",18,97};cout << "name=" << s2.name << "  age=" << s2.age << "  score=" << s2.score << endl;//结构体变量创建方式3s3.name = "王五";s3.age = 17;s3.score = 78;cout << "name=" << s3.name << "  age=" << s3.age << "  score=" << s3.score << endl;system("pause");return 0;
}

总结1:定义结构体时的关键字是struct,不可省略
总结2:创建结构体变量时,关键字struct可以省略
总结3:结构体变量利用操作符 ''.''  访问成员

3.结构体数组

作用:将以上定义的张三,王五等结构体一起打包放在一个数组里面。

//结构体定义
struct student
{//成员列表string name;  //姓名int age;      //年龄int score;    //分数
}
int main() {//结构体数组struct student arr[3]={{"张三",18,80 },{"李四",19,60 },{"王五",20,70 }};for (int i = 0; i < 3; i++){//输出每个成员,数组是从0开始算的cout << "姓名:" << arr[i].name << " 年龄:" << arr[i].age << " 分数:" <<
arr[i].score << endl;}system("pause");return 0;
}

4 结构体指针

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

//结构体定义
struct student
{//成员列表string name;  //姓名int age;      //年龄int score;    //分数
};
int main() {struct student stu = { "张三",18,100, };struct student * p = &stu;p->score = 80; //指针通过 -> 操作符可以访问成员cout << "姓名:" << p->name << " 年龄:" << p->age << " 分数:" << p->score <<
endl;system("pause");return 0;
}

5.结构体嵌套结构体

简单来说就是结构体里面还有结构体,套娃行为

//学生结构体定义
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.id = 10000;t1.name = "老王";t1.age = 40;t1.stu.name = "张三";t1.stu.age = 18;t1.stu.score = 100;cout << "教师 职工编号: " << t1.id << " 姓名: " << t1.name << " 年龄: " <<
t1.age << endl;cout << "辅导学员 姓名: " << t1.stu.name << " 年龄:" << t1.stu.age << " 考试分
数: " << t1.stu.score << endl;system("pause");return 0;
}

6 结构体做函数参数

作用:将结构体作为参数向函数中传递
传递方式有两种:
值传递,不可以改变形参
地址传递,可改变形参

//学生结构体定义
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);cout << "主函数中 姓名:" << stu.name << " 年龄: " << stu.age << " 分数:" <<
stu.score << endl;cout << endl;//地址传递printStudent2(&stu);cout << "主函数中 姓名:" << stu.name << " 年龄: " << stu.age  << " 分数:" <<
stu.score << endl;system("pause");return 0;
}

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

7 结构体中 const使用场景 
作用:用const来防止误操作,因为const修饰的常量,不可修改。

//学生结构体定义
struct student
{//成员列表string name;  //姓名int age;      //年龄int score;    //分数
};
//const使用场景
void printStudent(const student *stu) //加const防止函数体中的误操作
{//stu->age = 100; //操作失败,因为加了const修饰cout << "姓名:" << stu->name << " 年龄:" << stu->age << " 分数:" << stu-
>score << endl;
}
int main() {student stu = { "张三",18,100 };printStudent(&stu);system("pause");return 0;
}

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

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

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

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

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

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

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

  4. C++结构体 结构体定义和使用、结构体数组、结构体指针、结构体嵌套结构体、结构体做函数参数

    C++结构体 第二章 C++结构体 1.结构体定义和使用 语法:struct 结构体名 { 结构体成员列表 }: 通过结构体创建变量的方式有三种: struct 结构体名 变量名 struct 结构体 ...

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

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

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

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

  7. 【C 语言】结构体 ( 结构体作为函数参数 | 结构体指针作为函数参数 )

    文章目录 一.结构体作为函数参数 二.结构体指针作为函数参数 三.完整代码示例 一.结构体作为函数参数 结构体变量 作为函数形参 , 在函数中 , 只能访问 该函数形参 , 无法修改 结构体内存 的值 ...

  8. C# 结构体定义 转换字节数组 z

    客户端采用C++开发,服务端采用C#开发,所以双方必须保证各自定义结构体成员类型和长度一致才能保证报文解析的正确性. [StructLayoutAttribute(LayoutKind.Sequent ...

  9. C++_结构体中const使用场景_结构体_毕业设计案例_使用结构体数组_随机数种子---C++语言工作笔记027

    然后我们再看const符号,在结构体中的应用 首先我们新建一个结构体.student 然后定义一个结构体变量,并初始化 然后我们再写个方法,去打印这个结构体变量 可以看到我们用的是传值

最新文章

  1. Sublime text别再弹出(wei zhu ce)以及(geng xin)提示了?
  2. Linux-locate/slocate命令
  3. matlab中sign函数用法
  4. MyEclipse 2014中 Window--customize perspective 功能 打不开的解决办法
  5. notebook中安装lightgbm的gpu版本
  6. 如何判断当面的网页加载完成?
  7. 19年8月 字母哥 第一章 spring boot 2.x基础及概念入门 这里全部看完了 热部署没出来 第二章在前面2页 用热点公司网不行
  8. mysql 5.1版本无innodb trx_MySQL 5.7: Innodb 事务子系统优化-阿里云开发者社区
  9. js求两圆交点_Chart.js找到交点Point并绘制一个圆
  10. Go语言如何操纵Kafka才能保证消息不丢?
  11. linux是什么样的_您的Linux设置是什么样的?
  12. 【java】创建一个JFrame,可以使得一个字符串用按钮进行颜色的选择
  13. 面试官是如何看程序员的简历
  14. 《无码的青春》第七章 御姐
  15. php缓存memclear,PHP内存缓存加速功能memcached安装与用法
  16. SSH使用教程( Bitvise Tunnelier+Chrome+Proxy Switchy)
  17. 电脑一键重装系统按F几进u盘启动
  18. 黑苹果强制关机导致硬盘挂在失败问题
  19. 室内制图如何让您的办公室受益
  20. 【有利可图网】PS实战系列:制作饼干字特效

热门文章

  1. Navicat Premium注册
  2. 麟羽kpl单人切双c内部语言,最后一帖,以后不再讨论麟羽
  3. 数据库关系代数之除运算
  4. 软件测试 | 什么是Web
  5. 供应链金融+区块链双链合璧
  6. 微信小程序只允许触发一次点击事件(防止多次点击事件)
  7. c语言常用滤波算法,10种常用滤波算法C实现.c
  8. iebook超级精灵2008 专业版破解
  9. GB/T 8567-2006《计算机软件文档编制规范》可行性分析(研究)报告(FAR)
  10. 5G NR标准: 第20章 5G的演进