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

目录

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

1、结构体创建

2、结构体创建代码演示

3、结构体数组

4、结构体数组代码演示

5、结构体指针

6、结构体指针代码

7、结构体嵌套结构体

8、结构体嵌套结构体代码

9、结构体做函数参数

10、结构体做函数参数代码演示

11、结构体const变量使用场景


1、结构体创建

  • struct结构体名 变量名
  • struct 结构体名 变量名={成员值1,成员值2,...}
  • 定义结构体时顺便定义变量

2、结构体创建代码演示

#include<iostream>
#include<string>
using namespace std;
//通过结构体创建变量的方式有三种
//1、struct结构体名 变量名
//2、struct 结构体名 变量名={成员值1,成员值2,...}
//3、定义结构体时顺便定义变量
struct Student
{string name;int age;int score;
};
struct Student2
{string name;int age;int score;
}s3;
int main() {//第一种Student s1;s1.name = "张三";s1.age = 18;s1.score = 99;cout << "name=" << s1.name << "  age=" << s1.age << "  score=" << s1.score << endl;//第二种Student s2 = {"王二",18,97};cout << "name=" << s2.name << "  age=" << s2.age << "  score=" << s2.score << endl;//第三种s3.name = "王二";s3.age = 17;s3.score = 78;cout << "name=" << s3.name << "  age=" << s3.age << "  score=" << s3.score << endl;system("pause");return 0;
}

name=张三  age=18  score=99
name=王二  age=18  score=97
name=王二  age=17  score=78
请按任意键继续. . .

3、结构体数组

  • 定义结构体
//1、定义结构体
struct  student
{string name;int age;int score;
};
  • 创建结构体数组
 //2、创建结构体数组struct student stuarr[3] = {{"张三",18,100},{"李四",17,90},{"王二",16,80}};
  • 给结构体数组中的元素赋值
 //3、给结构体数组中的元素赋值stuarr[2].name = "李三";stuarr[2].age = 17;stuarr[2].score = 10;
  • 遍历结构体数组
 for (int i = 0; i < 3; i++){cout << "姓名:" << stuarr[i].name << "\t年龄:" << stuarr[i].age << "\t分数:" << stuarr[i].score << endl;}

4、结构体数组代码演示

#include<iostream>
#include<string>
using namespace std;
//结构体数组
//1、定义结构体
struct  student
{string name;int age;int score;
};int main() {//2、创建结构体数组struct student stuarr[3] = {{"张三",18,100},{"李四",17,90},{"王二",16,80}};//3、给结构体数组中的元素赋值stuarr[2].name = "李三";stuarr[2].age = 17;stuarr[2].score = 10;//4、遍历结构体数组for (int i = 0; i < 3; i++){cout << "姓名:" << stuarr[i].name << "\t年龄:" << stuarr[i].age << "\t分数:" << stuarr[i].score << endl;}system("pause");return 0;
}

姓名:张三       年龄:18        分数:100
姓名:李四       年龄:17        分数:90
姓名:李三       年龄:17        分数:10
请按任意键继续. . .

5、结构体指针

  • 创建学生结构体变量
  • 通过指针指向结构体变量
  • 通过指针访问结构体变量中的数据,过结构体指针访问结构体中的属性,需要利用“->”

6、结构体指针代码

#include<iostream>
#include<string>
using namespace std;
//结构体数组
struct  student
{string name;int age;int score;
};int main() {//1、创建学生结构体变量student s1 = { "李四",19,90 };//2、通过指针指向结构体变量student *p = &s1;//3、通过指针访问结构体变量中的数据cout << "姓名:" << p->name << "\t年龄:" << p->age << "\t分数:" << p->score<<endl;//通过结构体指针 访问结构体中的属性,需要利用“->”system("pause");return 0;
}

姓名:李四      年龄:19        分数:90
请按任意键继续. . .

7、结构体嵌套结构体

在一个结构体中包含另一个结构体变量,需要事先定义好该结构体。

struct student
{string name;int age;int score;
};
struct teacher
{string name;int age;string id;struct student stu;
};

8、结构体嵌套结构体代码

#include<iostream>
#include<string>
using namespace  std;
//结构体嵌套结构体
struct student
{string name;int age;int score;
};
struct teacher
{string name;int age;string id;struct student stu;
};
int main() {teacher t1;t1.id = "001";t1.name = "大王";t1.age = 50;t1.stu.name = "小王";t1.stu.age = 15;t1.stu.score = 90;cout << t1.id << endl << t1.name << endl << t1.age << endl<< t1.stu.name << endl << t1.stu.age << endl << t1.stu.score << endl;system("pause");return 0;
}

001
大王
50
小王
15
90
请按任意键继续. . .

9、结构体做函数参数

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

方式:值传递、地址传递

10、结构体做函数参数代码演示

#include<iostream>
#include<string>
using namespace  std;
//结构体做函数参数
//作用:将结构体作为参数向函数传递
//传递的方式有两种:值传递、地址传递
struct student
{string name;int age;int score;
};
//值传递
void print(student s1) {cout << "值传递" << endl;s1.age = 100;cout << "子函数姓名:" << s1.name << "\t年龄:" << s1.age << "\t分数:" << s1.score << endl;
}
//地址传递
void print2(student *s) {cout <<"地址传递" << endl;s->age = 90;cout << "子函数姓名:" <<s->name<< "\t年龄:" << s->age << "\t分数:" << s->score << endl;
}
int main() {student s1;s1.name = "Lijian";s1.age = 25;s1.score = 100;print(s1);cout << "主函数姓名:" << s1.name << "\t年龄:" << s1.age << "\t分数:" << s1.score << endl;print2(&s1);cout << "主函数姓名:" << s1.name << "\t年龄:" << s1.age << "\t分数:" << s1.score << endl;system("pause");return 0;
}

值传递
子函数姓名:Lijian      年龄:100       分数:100
主函数姓名:Lijian      年龄:25        分数:100
地址传递
子函数姓名:Lijian      年龄:90        分数:100
主函数姓名:Lijian      年龄:90        分数:100
请按任意键继续. . .

11、结构体const变量使用场景

加入const之后,一旦有修改操作就会报错,可以防止我们的误操作对外面数据进行修改。

void print3(const student *s) {//加入const之后,一旦有修改操作就会报错,可以防止我们的误操作对外面数据进行修改cout << "const变量使用场景" << endl;//s->age = 90;错误cout << "子函数姓名:" << s->name << "\t年龄:" << s->age << "\t分数:" << s->score << endl;
}

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

  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. C++结构体 结构体定义和使用、结构体数组、结构体指针、结构体嵌套结构体、结构体做函数参数

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

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

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

  7. C++模板学习02(类模板)(类模板语法、类模板与函数模板的区别、类模板中的成员函数创建时机、类模板对象做函数参数、类模板与继承、类模板成员函数类外实现、类模板分文件编写、类模板与友元)

    C++引用详情(引用的基本语法,注意事项,做函数的参数以及引用的本质,常量引用) 函数高级C++(函数的默认参数,函数的占位参数,函数重载的基本语法以及注意事项) C++类和对象-封装(属性和行为作为 ...

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

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

  9. 【C 语言】结构体 ( 结构体 数组 作为函数参数 | 数组 在 堆内存创建 )

    文章目录 一.结构体 数组 作为函数参数 ( 数组 在 堆内存创建 ) 二.完整代码示例 一.结构体 数组 作为函数参数 ( 数组 在 堆内存创建 ) 在上一篇博客 [C 语言]结构体 ( 结构体 数 ...

最新文章

  1. SpringBoot 统一时区的方案
  2. python arima模型_时间序列分析 ARIMA模型 Python(2)
  3. Spark你需要知道这些
  4. Tips - C++
  5. JavaScript计算两个文本框内数据的乘积(四舍五入保留两位小数)
  6. ctrllist如何多行显示_浩辰CAD教程:如何输入钢筋符号?
  7. Git之HEAD和origin
  8. 读书笔记2013第18本:《像外行一样思考,像专家一样实践》
  9. mysql 字符转换函数是_MySQL日期和字符串转换函数
  10. php 动态参数,PHP 动态配置运行时环境参数ini_xxx,extension_loaded
  11. php raido mysql,linux – 如何停止并修复已失败且I / O挂起的RAID 5阵列?
  12. Qt4_深入信号和槽
  13. centos6.5安装sublime text 2
  14. flash cs6 初试
  15. mp3 资源文件压缩
  16. python运行内存不足_python svm内存不足怎么解决?
  17. Words Reciting 2016.5.4
  18. 使用Python3自带GUI tkinter 做的图形化操作SQLite3数据库的工具 v1.12 修修补补将就用
  19. 嵌入式开发—交叉编译OpenCV
  20. 4.python-opencv图像马赛克

热门文章

  1. 干货分享 | 代谢组学数据分析,常见图形制作分享-百趣生物
  2. Clipboard.js 实现点击复制
  3. python实时显示图片_任何显示来自Cam的实时图像的快速Python GUI
  4. jQuery判断是否为数字
  5. Hander消息处理机制的步骤
  6. 书生笔记-binlog 的写入机制
  7. 将 vim 外的内容复制并粘贴到 Vim 里使用,如从windows系统复制内容到vim中使用
  8. 爬虫基础_urllib
  9. 谢少荣到计算机学院,我院获批国家自然科学基金委人工智能代码(F06)首个重大项目...
  10. pyltp安装的一系列过程