![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
贪玩老学长
当你觉得数学很重要的时候,你就是真正的科研人员了。
我是平头哥,只想打死各位或者被各位打死。
--菜鸟祥哥
展开
-
链表学习加深
四个区#include<stdio.h>#include<stdlib.h>int a; //全局变量的未初始化,默认是0;而局部变量不会,因此,局部变量为未初始化就会报错int main(void){ //int b; printf("a = %d\n",a); system("pause"); return 0;}#include<stdio.h>#include<stdlib.h>int a; //全局变量的未初始化原创 2020-10-19 16:14:34 · 73 阅读 · 0 评论 -
C++:STL学习vector
STL标准模板库容器 算法 迭代器容器和算法之间通过迭代器进行无缝连接容器算法迭代器仿函数vector::iterator itBegin = v.begin();//起始迭代器 指向容器中的第一个元素vector::iterator itEnd = v.end();//结束迭代器 指向的最后一个元素的下一个//通过迭代器访问容器中的数据vector<int>::iterator itBegin = v.begin();//起始迭代器 指向容器中的第一个元素ve原创 2020-10-16 20:12:36 · 80 阅读 · 0 评论 -
C++文件操作
1 ofstream:写操作2 ifstream:读操作3 fstream:读写操作文本文件写文件1包含头文件#include2 创建流对象osrteam ofs3 打开文件ofs.open(“文件打开方式”)4 写数据ofs<“写入的数据”;5 关闭文件ofs.close()文件操作(写文件)1 包含头文件2 创建流3 打开(选用合适的打开模式)4 开始进行读或者写操作5 关闭文件(操作完毕)如果不指定路径的话,默认的情况就在源文件所在目录下生成一个..原创 2020-10-16 18:38:20 · 109 阅读 · 0 评论 -
C++类多态
静态多态和动态多态以下代码是地址早绑定:#include<iostream>#include<string>using namespace std;class Animal{public: void speak() { cout << "动物在说话" << endl; }};class Cat :public Animal{ void speak() { cout << "猫在说话" <<.原创 2020-10-16 16:36:29 · 725 阅读 · 0 评论 -
C++运算符重载
加法用算符重载#include<iostream>#include<string>using namespace std;class Person{public: //1、 成员函数重载+号 Person operator+(Person &p) { Person temp; temp.m_A = this->m_A + p.m_A; temp.m_B = this->m_B + p.m_B; return temp; }原创 2020-10-16 14:38:03 · 677 阅读 · 0 评论 -
C++类对象相关知识
class Person{int m_A;//非静态成员变量 属于类的对象上static int m_B;//静态成员变量 不属于类对象上void func() {} //非静态成员函数 不属于类对象上static void func2() {};//静态成员函数 不属于类的对象上};#include<iostream>#include<string>using namespace std;class Person{ int m_A;//非静态成员变原创 2020-10-16 10:24:00 · 101 阅读 · 0 评论 -
C++几个关键点记录
空指针和野指针都不是我们申请的空间,因此不要访问。常量指针:指针常量:加上const防止误操作,定义成只读类型int* func(){ int a = 10; return &a;//战区的数据在函数执行完毕后自动释放}int main(void){ //栈区注意事项 //不要返回局部变量的地址 int *p = func(); cout << *p << endl;//第一次可以打印正确的数字,是因为编译器作量保留 cout &.原创 2020-10-14 20:08:58 · 117 阅读 · 0 评论 -
算法排序:史上最全2
快速排序原创 2020-10-12 16:14:10 · 153 阅读 · 0 评论 -
排序介绍和学习:史上最全的排序算法
一、冒泡排序#include<sys/timeb.h> //这个可以精确到毫秒#define MAX 10000//获取精确的时间函数long getSystemTime(){ struct timeb tb; ftime(&tb); return tb.time * 1000 + tb.millitm;}#include<stdio.h>#include<stdlib.h>#include<string.h>#inc原创 2020-10-11 21:43:56 · 130 阅读 · 0 评论 -
企业链表 循环链表
原创 2020-10-11 17:46:42 · 63 阅读 · 0 评论 -
数据结构单项链表
data next链表:头文件API函数:#pragma once#ifndef LINKLIST_H#define LINKLIST_H#include<stdio.h>#include<stdlib.h>//链表节点typedef struct LINKNODE{ void* data;//无类型指针,可以指向任何类型的数据 struct LINKNODE* next;}LinkNode;//链表结构体typedef struct ..原创 2020-10-11 17:01:57 · 88 阅读 · 0 评论 -
C++第9讲:C++多态
原创 2020-10-09 16:12:06 · 103 阅读 · 0 评论 -
C++第8讲:类继承各种继承关系
//耦合度:高内聚 低耦合什么是耦合模块与模块之间有写操作是有关联的, 如果改动一个木块其他的木块都有可能受到影响,模块与模块之间的关系越是紧密,独立性就越不好!例如:如果模块1直接操作了木块2红的数据,这种操作模块与模块之间就为强耦合,甚至可以认为这种情况之下基本算没有分模块!如果1只是通过数据与2模块交互,这种我们称之为弱耦合!微服务独立的模块,方便去维护,或者写单元测试等等…如果木块之间的依赖非常严重,将会非常不易于维护。虚继承...原创 2020-10-09 15:17:38 · 148 阅读 · 0 评论 -
C++第7讲:操作符重载
操作符重载,通过重载,对自定义的数据类型进行操作//…这里是操作符重载,写在全局//...这里是操作符重载,写在全局 Complex operator+(Complex &c1, Complex &c2){ Complex temp(c1.a + c2.a, c1.b + c2.b); return temp;}单目运算符不能写全#include<iostream>#include<cmath>using namespace std;.原创 2020-10-09 11:22:14 · 69 阅读 · 0 评论 -
C++第6讲:友元函数
如果对一个对象连续调用成员方法,每次都会改变对象本身,成员方法需要返回引用#include<iostream>using namespace std;class Test { public: Test(int a, int b) { this->a = a; this->b = b; } void printT() { cout << "a = " << this->a << " " &.原创 2020-10-09 09:25:29 · 185 阅读 · 0 评论 -
C++第6讲:强化学习(仓库货物管理)
原创 2020-10-08 22:25:42 · 467 阅读 · 0 评论 -
C++第5讲:默认的构造和析构函数、拷贝函数
析构不可以进行重载拷贝函数构造函数是对象初始化的时候调用#include<iostream>#include<cmath>#pragma warning (disable :4996)using namespace std;class Teacher{public: Teacher(int id, char *name) { cout << "int,char *" << endl; m_id = id; i..原创 2020-10-08 21:12:37 · 152 阅读 · 0 评论 -
C++第4讲:构造和析构
#include<iostream>#include<cmath>using namespace std;class Test{public: //test类的构造函数 //在对象呗创建的时候,用来初始化对象的函数 Test(int x, int y) { m_x = x; m_y = y; } //构造函数是可以被重载的 Test(int x) { m_x = x; m_y = 0; } //无参构造构造函数,默认初始值为0原创 2020-10-08 15:18:24 · 119 阅读 · 0 评论 -
C++第3讲:判断两个圆的关系 、构造和析构
上一讲提到的判断两个圆的关系,通过类实现,看代码:#include<iostream>#include<cmath>using namespace std;//判断两个圆的关系// 点类class Point{public: void setXY(int x, int y) { m_x = x; m_y = y; } //计算两点间的方法 double pointDistance(Point &another) { int d_x原创 2020-10-08 08:41:23 · 810 阅读 · 0 评论 -
C++第3讲:类和对象的介绍,开始上硬菜
这里定义在类的private下,在类外是没有访问权限的#include<iostream>#pragma warning(disable:4996) //注意这一句的使用,可以解决C语言中出现的一些兼容性问题using namespace std;struct Hero{ char name[10]; int sex;};//这个一定要写在全局中才能实现对于结构体的打印,但是对于类而言,并不是这样的,还可以写在类里面void print_info(struct.原创 2020-10-07 22:00:43 · 107 阅读 · 0 评论 -
C++第2讲:内联函数,函数重载以及函数指针与函数重载
内联函数关键字inline 必须与函数定义体放在一起才能使函数成为内联,仅将inline 放在函数声明前面不起任何作用。慎用内联内联能提高函数的执行效率,为什么不把所有的函数都定义成内联函数?如果所有的函数都是内联函数,还用得着“内联”这个关键字吗?内联是以代码膨胀(复制)为代价,仅仅省去了函数调用的开销,从而提高函数的执行效率。如果执行函数体内代码的时间,相比于函数调用的开销较大,那么效率的收获会很少。另一方面,每一处内联函数的调用都要复制代码,将使程序的总代码量增大,消耗更多的内存空间。原创 2020-10-07 15:14:39 · 104 阅读 · 0 评论 -
C++第2将:C++相对于C语言的增强和扩展、引用和指针的区别
引用和指针的区别★相同点:●都是地址的概念;指针指向一块内存,它的内容是所指内存的地址;而引用则是某块内存的别名。★不同点:●指针是一个实体,而引用仅是个别名;●引用只能在定义时被初始化一次,之后不可变;指针可变;引用“从一而终”,指针可以“见异思迁”;●引用没有const,指针有const,const的指针不可变;具体指没有int& const a这种形式,而const int& a是有的,前者指引用本身即别名不可以改变,这是当然的,所以不需要这种形式,后者指引用所指的..原创 2020-10-07 11:36:07 · 92 阅读 · 0 评论 -
C++第一讲:指针、引用例子讲解
#include<iostream>using namespace std;struct student{ char name[100]; int age;};//这里结构体是通过指针进行传递的,一般来说就是4个字节void print_info(struct student *p){ cout << "姓名:" << p->name << " " << "年龄:" << p->age <&l原创 2020-10-07 08:50:18 · 94 阅读 · 0 评论 -
C++第1讲:综述C++
看到这里,你还想搞C++吗?哈哈哈,试试看,应该不会掉头发吧。在C++语言中,随用随定义在C语言中,重复定义多个同名的全局变量是合法的。在C++中,不允许定义多个同名的全局变量。在C语言的struct定义一组变量的集合,C编译器并不认为这是一种新的类型在C++中的struct是一个新的定义声明左值和右值得当左值的条件是,要有内存空间。在C++中三目运算,可以当左值。const常亮是由编译器处理的,提供类型检查和作用阈检查宏定义由预处理器处理,单纯的文本替换。C++枚举,.原创 2020-10-06 22:32:48 · 96 阅读 · 0 评论 -
C语言第16题:单项链表的实现
原创 2020-10-06 20:46:20 · 80 阅读 · 0 评论 -
C语言第15题:二分查找+二分递归查找 终于知道函数封装的好处了
今天又回来学习啦,预计今天完成C的学习,晚上开始学习C++和大家简单唠唠嗑,因为现在在秋招,我一开始在做图像处理相关的,当初为了偷懒,不想学习C\C++,选择了python学习,学习过python的小伙伴,一定知道,这个是比较简单的,很多已经被做成了函数和库,可是去找图像相关的工作,对学历、算法要求还有不少,于是找工作很不顺利(当然也是自己学的不精),于是准备转找嵌入式相关的,因为我也有1-2年的嵌入式软件相关的编程,但是忘得差不多了,于是从C开始捡。正在学习的小伙伴也要好好的准备吧,不然以后找工作就很原创 2020-10-06 17:04:01 · 169 阅读 · 0 评论 -
C语言第14题:数据结构冒泡与选择(文件操作明天学习分享)
算法:有穷性确定性可行性数据结构对于面试的时候问的比较多,因此这里需要进行学习,仅仅用C语言进行讲解,对于其他语言都是一样的,只不过是编程的代码不一样而已。#include<stdio.h>int main(void){ int s[10] = { 10,23,34,32,42,12,9,56,21,8 }; int i; printf("排序前:"); for (i = 0; i < 10; i++) { printf("%d ",s[i]); } pr原创 2020-10-05 22:34:06 · 74 阅读 · 0 评论 -
C语言第13题:枚举与typedef + typedef 和define 区别
#include<stdio.h>#include<string.h>#include<stdlib.h>#pragma warning(disable:4996) //注意这一句的使用,可以解决C语言中出现的一些兼容性问题enum A{ red, black, yellow //其实就是整数,从0开始0,1,2,3,4,5,6...};int main(){ // yellow = 20;//美剧是常亮,值是不能改变的 int color.原创 2020-10-04 14:59:30 · 119 阅读 · 0 评论 -
C语言第12题:联合体的定义和使用
//同一个时刻只使用一个成员,就没必要开辟那么多内存空间去储存结构体变量#include<stdio.h>#include<string.h>#include<stdlib.h>#pragma warning(disable:4996) //注意这一句的使用,可以解决C语言中出现的一些兼容性问题union A{ int a; char b;};int main(){ union A a; a.a = 10; a.b = 20; pri原创 2020-10-04 14:34:05 · 803 阅读 · 0 评论 -
C语言第10题:结构体知识 +结构体作函数参数(使用指针提高效率)
注意上面的struct stduent{char name[100];int age;}只是定义了一种类型,并不是变量,正式定义变量是在下面开辟空间的时候不能直接使用结构体类型的数组进行->操作,->是针对指针类型而言的。定义的是指针类型的char *name;所以在只是一个地址信息,在使用的时候需要先用malloc进行内存分配才可以进行使用这里有一个重点内容,就是结构体使在堆区开辟的,然后对于结构体里面的成员再进行堆去分配,那么就出现了嵌套的使用情况,那么在释放的时候.原创 2020-10-04 12:30:38 · 907 阅读 · 0 评论 -
C语言第11题:结构体数组的定义与使用 + 结构体数组排序
注意:一下赋值是不能使用的但是在结构体中是可以直接进行赋值操作的st[1] = st[2];printf(“姓名 = %s, 年龄 = %d, 班级 = %s, 成绩 = %d\n”,st[1].name,st[1].age,st[1].classes,st[1].score);结构体使可以进行互相赋值的struct A a1 = { “hello” };struct A a2 = {“c”};a2 = a1;#include<stdio.h>struct E{ ch原创 2020-10-04 10:16:39 · 1346 阅读 · 0 评论 -
C语言第9题:堆、栈和内存映射 ( malloc、calloc、realloc的区别)
区别:malloc、calloc、realloc的区别(1)函数malloc不能初始化所分配的内存空间,而函数calloc能.如果由malloc()函数分配的内存空间原来没有被使用过,则其中的每一位可能都是0;反之, 如果这部分内存曾经被分配过,则其中可能遗留有各种各样的数据.也就是说,使用malloc()函数的程序开始时(内存空间还没有被重新分配)能正常进行,但经过一段时间(内存空间还已经被重新分配)可能会出现问题.(2)函数calloc() 会将所分配的内存空间中的每一位都初始化为零,...原创 2020-10-03 21:30:59 · 307 阅读 · 0 评论 -
C语言第8题:变量作用阈
#include<stdio.h>int a = 20;//全局变量void test1(){ int a1 = 0; int a = 100;}void test2(){ int a2 = 100;}int main(){ int a = 0; a = 10; system("pause"); return 0;}文件中的变量extern int a ;出现在括号外面的变量就是全局变量不写auto变量,C语言默认是auto一般情况下,代码块原创 2020-10-03 20:56:24 · 102 阅读 · 0 评论 -
C语言第7题:指针总结(两张表格重点***)
字符拷贝拷贝的时候需要注意没有重叠区域原创 2020-10-03 20:18:56 · 109 阅读 · 0 评论 -
C语言第6题:指针与memset函数
函数指针:#include<stdio.h>int add(int a,int b){ return a + b;}int max(int a, int b){ return a > b ? a : b;}int main(void){ int(*p)(int, int);//定义一个指向函数的指针 int status = 0; printf("请输入你要计算的函数1:max;2:add"); scanf_s("%d",&status);原创 2020-10-03 20:05:56 · 292 阅读 · 0 评论 -
C语言第6题:保护函数参数以及返回值为指针的函数(***重点)
通过函数的指针参数可以间接的实现形参修改实参的值形参传递不能修改实参的值#include<stdio.h>void test(int n){ n++;}int main(void){ // 经常用指针访问数组 int i = 100; test(i); printf("i = %d\n",i); system("pause"); return 0;}而使用指针进行传递就不会出现这种情况了,就可以进行实参的修改#include<stdio.h>.原创 2020-10-03 18:00:55 · 257 阅读 · 0 评论 -
C语言第5题:数组指针指向多维数组
这两句是等效的int main(void){ int buf[2][3] = { {1,2,3},{4,5,6} }; //int*p[3];指针数组 int(*p)[3];//定义了一个指针,指向int [3]这种数据类型,指向二位数组的指针 p = buf;//p指向了二维数组中的第一行 p++;//指向了第二行 printf("%d\n",sizeof(p)); printf("%d,%d\n",p,p+1); //位移了1 * sizeof(int [3]) system.原创 2020-10-03 15:53:35 · 371 阅读 · 0 评论 -
C语言第4题:指针数组以及多级指针
#include<stdio.h>#include<string.h>int main(void){ int *a[10];//定义了一个指针数组,一共有10个成员,其中每一个成员都是int *类型 printf("%d,%d\n", sizeof(a),sizeof(a[0])); double *b[10];//定义了一个指针数组,一共有10个成员,其中每一个成员都是double *类型 printf("%d,%d\n", sizeof(b), sizeof原创 2020-10-03 15:14:21 · 242 阅读 · 0 评论 -
C语言第3题:指针第汉字字符串进行逆序
主要是将汉字字符进行逆序输出与英文不同的是,一个汉字占有两个字符。所以处理的时候需要注意思路其实就是讲最后的一个地址给第一个,倒数第二个给第二个,以此类推。#include<stdio.h>#include<string.h>int max_res(int *s){ char str[100] = "我是一个好孩子"; short *str_start = &str[0]; short *str_end = &str[strlen(str) -.原创 2020-10-03 13:44:05 · 543 阅读 · 0 评论 -
C语言第2题:指针和数组的关系
可以看到p/p1与p2相差为4#include<stdio.h>int main(void){ int buf[10]; int *p = buf; int *p1 = &buf[0]; int *p2 = &buf[1]; printf("%d,%d,%d\n",p,p1,p2); //可以看到p/p1与p2相差为4 system("pause"); return 0;}#include<stdio.h>int main(void)原创 2020-10-03 13:27:55 · 267 阅读 · 0 评论