自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 资源 (2)
  • 问答 (2)
  • 收藏
  • 关注

原创 10.5 常量引用

10.5 常量引用用const修饰的引用成为常量引用,这样引用关系不能修改,引用的数据也不能修改。常量引用经常用作函数的形参,这样可以方式误操作修改了实参。#include<iostream>using namespace std;void showValue(const int& val){ //val = 1000; //错误,常量引用不能修改值 cout << "val=" << val << endl;}int main()

2020-06-30 23:23:22 165

原创 10.4 引用的本质

10.4 引用的本质引用的本质其实是一个指针常量。也就是说: int &b = a;本质上是: int* const b = &a;回想一下引用的一个特性(引用一旦确定了引用关系就不能改变)不难发现,这与指针常量的特性一样。指针常量也是不能再改变指针指向的地址。...

2020-06-30 23:19:41 205

原创 10.3 引用做函数的返回值

10.3 引用做函数的返回值引用做函数的返回值时,不要返回局部变量的引用,这跟不要返回局部变量的指针时一个道理。因为局部变量在函数执行完毕之后就释放掉了,这样返回的引用也引用了一个寂寞,没意义。但跟之前一样,编译器仍会做一次保留。#include<iostream>#include<string>using namespace std;//不要返回局部变量的引用int& test1(){ int a = 10; return a;}int&

2020-06-30 23:12:03 150

原创 10.2 引用做函数参数

10.2 引用做函数参数引用做函数参数跟地址传递一样,可以通过形参改变实参。这里写三个函数,分别为值传递、地址传递、引用传递,对比其中的不同。#include <iostream>using namespace std;//1、值传递void swap1(int a, int b){ int temp = a; a = b; b = temp;}//地址传递void swap2(int* a, int* b){ int temp = *a; *a = *b;

2020-06-30 23:00:45 854

原创 10.1 引用的基本使用

10.1 引用的基本使用引用就是给一个已经存在的变量令起一个名字,这样一个变量就有了两个名字。并且通过这两个名字都可以访问这个数据。引用的基本使用如下:#include<iostream>using namespace std;int main(){ //引用 数据类型 & 别名 = 原名 int a = 10; int &b = a; cout << "a=" << a << endl; cout << "b

2020-06-30 22:43:59 123

原创 9.3 new操作符

9.3 new操作符new操作符返回的时对应数据类型的指针,所以要用一个指针区接收。数据使用完成后应及时释放,用delete关键字释放。还是上节的例子:#include<iostream>using namespace std;int* func(){ int *p = new int(10); return p;}int main(){ int* p = func(); cout << *p << endl; cout <&l

2020-06-30 00:17:38 91

原创 9.2 C++内存分区模型-程序运行后

9.2 C++内存分区模型-程序运行后9.2.1 栈区栈区存放局部变量、函数参数等,栈区的数据由编译器管理开辟和释放。由于局部变量在使用完后即销毁,所以不要返回局部变量的地址。#include <iostream>using namespace std;int* func(){ int a = 10; return &a; //返回局部变量的地址}int main(){ int* p = func(); cout << *p <<

2020-06-29 23:59:36 403

原创 9.1 C++内存分区模型-程序运行前

9.1 C++内存分区模型-程序运行前C++将内存大致分为4个区域:代码区存放程序的二进制代码全局区存放全局变量、静态变量、常量,程序结束后由操作系统释放栈区由编译器分配释放,存放局部变量等堆区由程序员管理释放,如果程序员不释放,程序结束后自动释放程序编译后,生成了exe可执行程序,在程序未运行之前,有两个区,分别是代码区和全局区。9.1.1 代码区代码区存放了exe的二进制指令,有两个特性:共享。对于一个exe,只存有一份指令,每次运行时都执

2020-06-29 23:27:23 157

原创 8.7 结构体示例二

8.7 结构体示例二本示例定义了5个人,再将这五个人按年龄升序排列。step1:定义好结构体。struct hero{ string name; int age; string sex;};step2:创建并初始化结构体。 hero heroarray[5] = { {"刘备",23,"男"}, {"关羽",22,"男"}, {"张飞",20,"男"}, {"赵云",21,"男"}, {"貂蝉",19,"女"}, };step3:利用冒泡排序对年龄升序

2020-06-29 20:17:10 198

原创 8.6 结构体示例一

8.6 结构体示例一本示例很简单,不过是把之前学到的知识点串在了一块。大致内容是创建一个教师数组,每个教师有三名学生,每个学生有一个成绩。先通过for循环对这些对象初始化,再将其打印出来。step1:首先创建好teacher和student的结构体。struct student{ string name; int score;};struct teacher{ string name; student sarray[5];};step2:再创建1个教师数组,包含3个对象。

2020-06-29 20:06:33 162

原创 8.5 结构体做函数参数

8.5 结构体做函数参数结构体只是一种自定义的数据类型,仍然可以像其他类型一样作为函数参数传递。下面的两个函数一个用值传递的方式打印学生姓名,另一个用地址传递方式打印姓名。#include <iostream>#include <string>using namespace std;struct student{ string name; int age; int score;};//值传递void printstudent1(student s){

2020-06-29 19:43:36 205

原创 8.4 结构体嵌套结构体

8.4 结构体嵌套结构体结构体中的成员可以是另一个新的结构体。下面定义的teacher结构体中有一个成员是student,而student是另一个结构体。#include<iostream>#include<string>using namespace std;int main(){ //结构体嵌套 struct student { string name; int age; int score; }; struct teacher { in

2020-06-29 19:38:41 1389

原创 8.3 结构体指针

8.3 结构体指针指针也可以指向结构体变量。当用指针访问结构体成员时,要把 . 改为->#include <iostream>#include <string>using namespace std;int main(){ struct student { string name; int age; int score; }; student s = { "张三",18,100 }; student* p = &s; //注意访问

2020-06-28 18:37:40 73

原创 8.2 结构体数组

8.2结构体数组跟普通数据类型一样,结构体也可以创建数组对象。#include<iostream>using namespace std;int main(){ //结构体数组 //1、定义结构体 struct student { string name; int age; int score; }; //2、创建结构体数组 student stuarray[3] = { {"张三",18,100},{"李四",28,99},{"王五",38,66}

2020-06-28 18:27:59 160

原创 8.1 结构体的定义和使用

8.1 结构体的定义和使用结构体是一种自定义数据类型,跟普通的数据类型具有相似的用法。#include <iostream>#include <string>using namespace std;int main(){ //结构体的定义格式 struct student { string name; int age; int score; }s3; //可以在定义结构体时顺便实例化一个对象 //使用点访问结构体成员 s3.name = "王五

2020-06-28 18:20:25 118

原创 7.7 指针、数组与函数的案例

7.7 指针、数组与函数的案例#include<iostream>using namespace std;void bubblesort(int* arr, int len){ for (int i = 0; i < len; i++) { for (int j = 0; j < len - i - 1; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] =

2020-06-28 18:11:59 114

原创 7.6 指针和函数

7.6 指针和函数之前说过,值传递时,无论对形参进行什么操作都不影响实参。但如果形参传入的是指针,那么就会对实参产生影响。这是因为对指针解引用是直接操作实参所占用的那一块内存。#include<iostream>using namespace std;void myswap(int* p1, int* p2){ int temp = *p1; *p1 = *p2; *p2 = temp;}int main(){ //指针和函数,地址传递,会改变实参 int a

2020-06-28 18:01:42 85

原创 7.5 指针和数组

7.5 指针和数组数组名其实就是一个地址,可以直接用另一个指针来接收。#include<iostream>using namespace std;int main(){ int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; int* p = arr; cout << "利用指针访问第一个元素:" << *p << endl; //无论数组元素是什么类型,p++都指向下一个元素 p++; cout <<

2020-06-28 17:53:05 126

原创 7.4 const修饰指针

7.4 const修饰指针名称表达式意义常量指针const int* p指针指向的值不能改,指针指向能改指针常量int* const p指针指向的值能改,指针指向不能改- -const int* const p指针指向的值不能改,指针指向不能改#include<iostream>using namespace std;int main(){ //常量指针,指针指向的值不可以改,指针指向可以改 int a = 10; const i

2020-06-28 17:47:02 80

原创 7.3 空指针和野指针

7.3 空指针和野指针空指针: 不指向任何地址。 int* p = NULL; //p是一个空指针,无法对其解引用。 *p = 100; //错误野指针: 指向一个非法的或已注销的内存。 //随便让p指向一个内存地址,这时再对p操作可能会修改系统中的某些数据,导致未知错误。 int* p = (int*)0x1100;睡意操作野指针是非常危险的做法,可能会使电脑崩溃。...

2020-06-28 17:40:08 129

原创 7.2 指针所占用的内存空间

7.2 指针所占用的内存空间指针变量跟其他常规变量一样,占用一定的内存空间,且占用的内存与所指向的数据类型无关。操作系统占用空间32位4字节64位8字节#include<iostream>using namespace std;int main(){ //指针所占用的内存空间,32位中4字节,64位8字节,无论数据类型 int a = 10; int* p = &a; cout << "p占用的内存空间:" <&lt

2020-06-28 17:30:50 1797

原创 7.1 指针的定义和使用

7.1 指针的定义和使用程序中定义的任何一个数据都有一个存放地址,而指针可以用来存放这个地址,并且可以通过这个地址在操作地址中存放的数据。如上图所示,用一块内存来存放数据a=10,这块内存的地址是0x0028。然后我么再定义个指针来存放0x0028这个地址。代码如下: int a = 10; int* p = &a;上面的代码,第一行我们定义了一个数据a=10;第二行定义了一个指针p指向a的地址。这里可以看出指针的定义格式:指针指向的数据是什么类型,就要用什么类型的指针来定

2020-06-28 12:20:17 251

原创 6.5 函数的分文件编写

6.5 函数的分文件编写在正规项目中,一般main函数所在文件只有一个卖弄函数,不包含其他内容。而把其他的类定义、函数之类的单多存放。本节介绍如何在一个单独的cpp文件定义函数。1. 首先像往常一样添加一个cpp文件用来写main函数。#include<iostream>#include "swap.h"using namespace std;int main(){ swap(1, 2); system("pause"); return 0;}2. 然后再添加头文件

2020-06-28 12:01:21 490

原创 6.4 函数的声明

6.4 函数的声明前面的例子都是函数定义写在函数调用之前,如果顺序反了就会报错。那么如何把定义放在后面呢,就要用到函数的声明。函数声明就是提前告诉编译器有这么一个函数存在,不用给我报错。声明就是函数定义的第一行加个分号。示例:#include <iostream>using namespace std;int main(){ int max(int a, int b); //这里先声明max函数 int a = 10; int b = 20; cout <<

2020-06-28 11:38:16 84

原创 6.3 函数常见样式

6.3 函数常见样式函数一共有四种常见样式:无参无返有参无返无参有返有参有返这四种形式定义如下:#include<iostream>using namespace std;//1、无参无返void test1(){ cout << "this is test1." << endl;}//2、有参无返void test2(int a){ cout << "this is test2. " << a <

2020-06-28 11:31:03 153

原创 6.2 值传递的特性

6.2 值传递的特性上节介绍的将实参复制给形参就是一种值传递,在函数体中对形参进行的任何操作不影响实参。代码验证:#include <iostream>using namespace std;void swap(int num1, int num2){ cout << "交换前:" << endl; cout << "num1=" << num1 << endl;; cout << "num2=" &lt

2020-06-27 21:52:05 171

原创 6.1 函数的定义

6.1 函数函数是实现某一功能的一段代码,它可以多次使用,增加了代码的复用性。语法:[返回值类型] [函数名称]([参数列表])下面是一个求和的函数示例:#include<iostream>using namespace std;//函数的定义,加法函数,返回和int sum(int num1, int num2) //函数定义时括号里的参数称为形式参数,简称形参{ return num1 + num2;}int main(){ int a = 10; int

2020-06-27 21:43:41 116

原创 5.2.2 二维数组案例-考试成绩

5.2.2 二维数组案例-考试成绩#include<iostream>using namespace std;int main(){ //二维数组案例-考试成绩 //1、创建二维数组 int scores[3][3] = { {100,100,100},{90,50,100},{60,70,80} }; string names[3] = { "张三","李四","王五" }; //、统计每个人总分 for (int i = 0;i < 3;i++) { cout

2020-06-27 14:43:30 333

原创 5.2.1 二维数组

5.2.1 二维数组二维数组的定义#include<iostream>using namespace std;int main(){ //二维数组定义方式 int arr1[2][3]; //两行三列 int zrr2[2][3] = { {1,2,3}, {4,5,6} }; int arr3[2][3] = { 1,2,3,4,5,6 }; int arr4[][3] = { 1,2,3,4,5,6 }; //一阶下标可以不标明,但二阶下标必须标明 //因

2020-06-27 14:39:25 97

原创 5.1.4 一维数组案例-冒泡排序

5.1.4 一维数组案例-冒泡排序冒泡排序的原理,建议参考视频讲解,这样会理解的更清楚。示例:#include <iostream>using namespace std;int main(){ //利用冒泡排序实现升序 int arr[9] = { 4,2,8,0,5,7,1,3,9 }; cout << "排序前:" << endl; for (int i = 0; i < 9; i++) { cout << arr[i

2020-06-27 13:59:35 291

原创 5.1.3 一维数组案例-元素逆置

5.1.2 一维数组案例-元素逆置示例:#include <iostream>using namespace std;int main(){ //逆置元素 int arr[5] = { 1,3,2,5,4 }; cout << "元素逆置前:" << endl; for (int i = 0; i < 5; i++) { cout << arr[i] << '\t'; } cout << endl;

2020-06-27 13:47:00 507

原创 5.1.2 一维数组案例-求最大值

5.1.1 一维数组案例-求最大值#include <iostream>using namespace std;int main(){ int arr[10] = { 24,88,24,51,130,33,109 }; int max = 0; for (int i = 0; i < 10; i++) { if (arr[i] > max) { max = arr[i]; } } cout << "最大值是:" << ma

2020-06-27 13:29:25 1393

原创 5.1.1 一维数组

5.1.1 一维数组数组是指一组类似个数组组成的集合,集中表示有利于管理。如一个班的所有同学可以用一个数组表示,同学1代表张三,同学2代表李四……本节介绍一维数组。语法:[数据类型] 数组名[数组长度];示例:#include<iostream>using namespace std;int main(){ //定义数组时必须确定初始长度 int arr1[5]; int arr2[5] = { 0,1,2 }; //后面的用0填充 int arr3[] = { 0

2020-06-27 13:18:40 128

原创 4.3.1 break、coninue、goto

4.3.1 break、coninue、goto关键词意义break立即跳出循环continue结束本次循环结束,直接进行下一轮循环goto跳到其他标识的地方1.break演示:#include<iostream>using namespace std;int main(){ //乘法口诀表 for (int i = 1; i <= 9; i++) { cout << i << endl; for

2020-06-24 00:29:16 117

原创 4.2.4 循环结构-嵌套循环

4.2.4 循环结构-嵌套循环一个循环里面可以再嵌套其他循环,叫做嵌套循环。用的最多的是for循环的嵌套。下面是一个打印乘法口诀的示例:#include<iostream>using namespace std;int main(){ //乘法口诀表 for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { cout << j << "×" << i

2020-06-24 00:05:11 317

原创 4.2.3 循环结构-for循环

4.2.3 循环结构-for循环语法:for([变量初值];[逻辑表达式];[变量变化规律]){[循环体]}实际上,for后面括号里的内容都能省略,只写两个分号就行。示例:#include<iostream>using namespace std;int main(){ for (int i = 0; i <= 9; i++) { cout << i << '\t'; } cout << endl; system("p

2020-06-24 00:01:29 1284

原创 4.2.2 循环结构-do while

4.2.2 循环结构-do while语法:do{[循环体]}while([逻辑表达式])当逻辑表达式为真时退出循环。示例:#include<iostream>using namespace std;int main() { //do while 先执行再判断条件 int num = 0; do { cout << num << '\t'; num++; } while (num < 10); cout << e

2020-06-23 23:40:13 174

原创 4.2.1 循环结构-while循环

4.2.1 循环结构-while循环循环结构是指重复地执行某一段代码,直到满足跳出循环的条件。while语法:while([逻辑表达式]){[循环体]}逻辑表达式为真时执行循环体。示例:#include<iostream>using namespace std;int main(){ int num = 0; while (num < 10) { cout << num << '\t'; num++; } cout &lt

2020-06-23 23:32:33 429

原创 4.1.4 选择结构-求最大值

4.1.4 选择结构-求最大值利用选择结构求三个数中的最大值:#include<iostream>using namespace std;int main() { int A = 0; int B = 0; int C = 0; cout << "请输入数A:"; cin >> A; cout << "请输入数B:"; cin >> B; cout << "请输入数C:"; cin >> C;

2020-06-23 16:04:56 384

原创 4.1.3 选择结构-三目运算符

4.1.3 选择结构-三目运算符语法:[逻辑表达式] ? [值1] : [值2];如果表达式成立,则返回值1,否则返回值2.示例:#include<iostream>using namespace std;int main(){ int a = 10; int b = 20; int c = 0; c = (a > b ? a : b); cout << "c=" << c << endl; //返回的值可以继续赋值 (a

2020-06-23 15:50:51 197

QT5自定义窗体及标题栏,全局背景,C++语言

qt自定义个性化的窗体和标题栏,并且实现阴影、拖拽、缩放、最大化等功能。

2022-01-10

基于多态的职工管理系统.rar

纯C++编写的职工管理系统(控制台应用),具有增删改查等功能,使用txt文件储存数据。运用多态技术,具有良好的可拓展性。使用vs2019编写,可以直接打开项目文件查看源码。良好的学习资源,上传时设置的是零积分下载,不知道你们看到的是不是免费。

2020-06-23

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除