自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

万里晴空

嵌入式软件工程师的自我成长之路

  • 博客(82)
  • 收藏
  • 关注

原创 C++杂讲 继承 与 派生

目录知识点1【继承和派生的概述】知识点2【继承的格式】知识点3【继承的内层结构】知识点4【继承中的构造和析构的顺序】知识点5【子类中 有父类、对象成员 构造和析构的顺序】知识点6【子类中的构造】知识点7【父类和子类的 同名成员变量 处理】知识点8【父类和子类的 同名成员函数 处理】知识点9【继承中的静态成员特性】知识点10【多继承】(了解)知识点11【菱形继承】 具有公共祖先 的多继承知识点12【虚继承】

2022-06-02 00:04:07 378

原创 C++杂讲 运算符重载

目录知识点1【运算符重载概述】知识点2【可重载的运算符】知识点3【运算符重载的步骤】知识点4【重载运算符<<】知识点5【重载>>运算符】知识点6【重载==运算符】知识点7【自增自减(++/--)运算符重载】知识点8【重载=赋值运算符】知识点9【重载 函数调用运算符 ()】知识点10【不要重载&& || 用户没办法实现短路特性】(重要)知识点11【不能重载的运算符】知识点12【运算符重载案例】知识点1【运算...

2022-05-31 00:01:54 350 2

原创 C++杂讲 友元

目录知识点1【友元概述】知识点2【普通全局函数 作为 类的友元】知识点3【类的某个成员函数 作为 另一个类的友元】知识点3【一个类整体 作为 另一个类的友元】知识点4【友元的注意事项】知识点5【封装电视机 和遥控器的类】1、封装电视机的类2、设置遥控器的类2-1友元函数 可以直接操作类的私有数据。friend关键字在声明处修饰函数 那么该函数就是类的友元。友元 不是类的一部分。知识点1【友元概述】c++允许 友元 访问 私有数据。友元的语法:..

2022-05-30 23:20:40 913

原创 C++杂讲 this指针

目录知识点1【成员数据和成员函数的存储方式】1、成员函数不占类的空间2、静态成员数据不占类的空间知识点2 【this指针的引入】知识点3【this指针概述】知识点4【this指针的使用】1、当形参和成员变量同名时,可用this指针来区分2、在类的普通成员函数中返回对象本身(*this)(重要)3、如果成员数据和函数的形参 同名 必须使用this指针4、this指针完成链式操作c++的封装性:将数据 和 方法 封装在一起数据 和 方法 是分开存储。每个.

2022-05-30 22:55:03 742 1

原创 C++杂讲 静态成员 与 单例设计模式

目录知识点1【静态成员概述】知识点2【静态成员数据】知识点3【static修饰静态成员函数】知识点4【const 修饰静态成员】知识点5【静态成员案例】知识点1【静态成员概述】1、静态成员包括静态成员数据、静态成员函数2、成员数据、成员函数被 static修饰 就叫静态成员数据、静态成员函数3、不管这个类创建了多少个对象,静态成员只有一份,这一份被所有属于这个类的对象共享。4、静态成员 是属于类 而不是具体的某个对象。5、静态成员 是在定义完类的时候 就.

2022-05-30 22:21:47 407

原创 C++杂讲 new和delete

目录知识点1 【new为基本类型 申请堆区空间】知识点2 【new为基本类型数组 申请堆区空间】注意:知识点3 【new申请自定义数据类型】(结构体、类型对象)知识点4 【c++中申请堆区空间】(1)、给对象申请空间需要做的事情(2)、释放对象空间需要做的事情知识点5 【delete不能作用void *修饰的对象指针】new从堆区申请, delete释放堆区空间知识点1 【new为基本类型 申请堆区空间】void test01(){ //1...

2022-05-30 21:51:22 204

原创 C++杂讲 浅拷贝 与 深拷贝

目录知识点1【浅拷贝(单纯值拷贝)】知识点2【深拷贝】知识点3【总结】知识点4【拷贝构造函数的调用时机】类中有指针成员 才会讨论 浅拷贝 和深拷贝问题。知识点1【浅拷贝(单纯值拷贝)】#include <iostream>#include <string.h>#include <stdlib.h>using namespace std;class Person{public: char *m_name;...

2022-05-26 23:23:13 120

原创 C++杂讲 类 的构造 与 析构

目录知识点1【构造和析构函数的概述】知识点2【构造函数】1、定义构造函数:2、构造函数的调用时机3、构造函数的分类以及调用构造函数分类:4、无参构造和有参构造的关系知识点4【拷贝构造函数】(重要)1、知识点的引入2、旧对象 给新对象 初始化 就会调用拷贝构造3、如果用户不提供拷贝构造 系统会提供 默认拷贝构造4、自定义拷贝构造、默认拷贝构造、默认无参构造的关系5、注意:知识点5【构造函数的调用规则】1、如果用户提供了有参构造 将屏蔽 系统的..

2022-05-26 23:10:23 583

原创 C++杂讲 类 初讲

目录知识点1【知识点引入】知识点2【类的初识】1、封装2、权限3、类的定义(定义类型)4、类的成员函数 类中声明 类外定义知识点3【Person类的设计】知识点4【设计立方体类】知识点5【点Point和圆Circle的关系】知识点1【知识点引入】C语言中 数据 和 方法 是独立://c语言的思想:数据 方法 分开//人typedef struct{ char name[32]; int age;}Person;//动物

2022-05-26 22:46:46 195

原创 C++杂讲 函数与重载

目录知识点1【函数的默认(缺省)参数】1、默认参数的定义2、默认参数的注意点知识点2【占位参数】1、占位参数 函数内部无法使用2、占位参数 可以设置成缺省参数知识点3【函数重载】1、函数的返回值类型 不能作为 函数重载的依据。2、函数重载和默认参数一起使用,需要额外注意二义性问题的产生3、函数重载的原理(了解)知识点1【函数的默认(缺省)参数】1、默认参数的定义c++在声明函数原型的时可为一个或者多个参数指定默认(缺省)的参数值,当函数调用的时候.

2022-05-26 22:26:55 116

原创 C++杂讲 内联函数

目录知识点1【宏函数(带参数的宏)的缺点】(重要)知识点2【inline修饰的函数就是内联函数】知识点3【内联函数的特点】知识点4【宏函数和内联函数的区别】知识点1【宏函数(带参数的宏)的缺点】(重要) 第一个问题:宏函数看起来像一个函数调用,但是会有隐藏一些难以发现的问题。例如:#define FUN(x, y) (x * y)printf("%d", add(3, 3 + 2)) //3 * 3 + 2 = 11以上情况可以通过加 ...

2022-05-26 22:07:26 158

原创 C++杂讲 引用 与 指针

目录知识点1【引用概念】知识点2【定义步骤】知识点3【引用必须初始化】知识点4【引用初始化后不能更改】知识点5【引用作为函数的参数 可以替代指针变量】知识点6【常引用】知识点7【引用作为函数的返回值类型】(1)、通过函数返回值 在外界操作 函数内部申请的空间(2)、引用作为函数的返回值类型 可以完成链式操作知识点8【引用的本质】知识点9【指针的引用(了解)】知识点1【引用概念】引用的本质:给已有的变量名 取个别名//给num取个别名为b..

2022-05-25 23:04:32 416

原创 C++杂讲 命名空间

目录知识点1【命名空间的定义】知识点2【命名空间只能全局范围内定义】知识点3【命名空间可嵌套命名空间】知识点4【命名空间是开放的】知识点5【命名空间 可以存放 变量 和 函数】知识点6【声明和实现可分离】知识点7【无名命名空间】知识点8【命名空间别名】知识点9【using 使用命名空间】(1)、简化了从命名空间的成员访问(2)、using 使用整个命名空间(3)、using 指明使用具体的命名空间 成员(4)、using声明碰到函数重载知识点10.

2022-05-25 22:52:59 151

原创 C++杂讲 c++对c的扩展

目录知识点1【c++对c的扩展之::(作用域)】1、作用域运算 ::知识点2【c++对c的扩展之命名空间】1、命名空间的定义2、命名空间只能全局范围内定义(以下错误写法)3、命名空间可嵌套命名空间4、命名空间是开放的,即可以随时把新的成员加入已有的命名空间中5、命名空间 可以存放 变量 和 函数6、声明和实现可分离(了解)7、无名命名空间8、命名空间别名9、using 使用命名空间(1)、简化了从命名空间的成员访问(2)、using 使用...

2022-05-25 22:45:07 911 2

原创 C++杂讲 C++ 概述

c++是面向对象、泛型编程。知识点1【第一个c++程序】//i input 输入 o output输出 stream流 输入输出流头文件(类似stdio.h)#include <iostream>//std(标准) 使用标准的命名空间using namespace std;//有且只有一个主函数 可以有多个其他函数int main(int argc, char *argv[]){ //cout 输出 类似 c语言的printf //endl 类似 c语

2022-05-25 09:49:42 99

原创 C杂讲 文件 续讲

目录知识点1【文件块的格式化读写】(重要)1、fprintf 文件的写操作2、fscanf格式化 读操作知识点2【文件的随机读写】(重要)1、rewind 复位文件流指针2、ftell 测文件读写位置距文件开始有多少个字节3、fseek 定位位置指针(读写位置)4、feof()函数 判断文件是否到达文件末尾知识点3【文件加密器】1、原理的分析项目提示:知识点1【文件块的格式化读写】(重要)fprintf(写) fscanf(读)1、f...

2022-05-25 00:02:34 303

原创 C杂讲 文件 初讲

知识点1【文件的概述】磁盘文件:文件用来存放程序、文档、音频、视频数据、图片等数据的。设备文件:在操作系统中把每一个与主机相连的输入、输出设备看作是一个文件,把它们的输入、输出等同于对磁盘文 件的读和写缓冲区的目的:提高存取效率 磁盘使用寿命2、磁盘文件的分类物理上 所有的磁盘文件都是 二进制存储,以字节为单位 顺序存储。逻辑上的文件分类:文本文件:基于字符编码的文件二进制文件:基于值编码的文件总结:(重要)3、文件指针注意:不要关...

2022-05-24 23:45:51 830

原创 C杂讲 浅拷贝 与 深拷贝

目录知识点1【知识点的引入】知识点2【深拷贝】知识点3【总结】知识点1【知识点的引入】1、当结构体中存在指针成员变量时,进行结构体变量拷贝操作时,存在浅拷贝与深拷贝差别问题。即:浅拷贝时,拷贝后两个结构体变量中指针成员变量指向同一个地址 深拷贝时,拷贝后两个结构体变量中指针成员变量指向不同地址typedef struct{ int num; char *name;//指针变量作为 结构体的成员}DATA;void test01(){ ...

2022-05-24 10:22:11 394

原创 C杂讲 双向循环链表

目录知识点1【双向循环链表】知识点2【双向链表的尾部插入】知识点3【双向链表的遍历】知识点3【双向链表查询某个节点】知识点4【双向链表删除指定节点】知识点4【双向链表释放链表节点】知识点5【Linux内核链表】知识点1【双向循环链表】知识点2【双向链表的尾部插入】STU*insert_link(STU*head,STUtmp){//为插入的节点申请空间STU*pi=(STU*)calloc(1,sizeof(...

2022-05-24 10:09:53 168

原创 C杂讲 动态链表操作 再讲

目录知识点1【布局个简单框架】知识点2【链表的插入】1、在链表的尾部插入2、链表的有序插入(难度)知识点2【链表查询某个节点】 按姓名 查找知识点3【删除链表指定节点】知识点4【链表的释放】知识点5【回顾一下】链表的插入:头部之前插入 尾部插入 有序插入链表的遍历:链表的查询:链表节点的删除:释放链表:知识点6【链表的逆序】知识点7【链表的排序】选择法排序:(以数组实现)知识点7【链表的排序(选择法)】知识点1【布局个简单框架】

2022-05-24 09:53:00 253

原创 C杂讲 链表初讲

目录知识点1【链表的概述】1、数组特点:2、链表的概述3、链表的特点知识点2【静态链表】知识点3【链表的操作】1、链表插入节点1.1:头部之前插入节点1.2:尾部之后插入节点1.3:有序插入节点2、遍历链表节点3、查询指定节点4、删除指定节点5、释放链表6、链表的翻转7、链表的排序知识点1【链表的概述】1、数组特点:1、空间连续、元素类型相同、通过下标快速访问2、静态数组:空间一旦确定不...

2022-05-24 09:29:51 227

原创 C杂讲 结构体 共用体 枚举

目录知识点1【共用体】(了解)知识点2【枚举】知识点3【结构体 与 共用体 的区别】知识点1【共用体】(了解)共用体和结构体 区别:结构体的成员拥有独立的空间共用体成员共享同一份的空间, 空间的大小由最大的成员类型长度决定案例1:共用体的成员虽然共享同一块空间 但是成员操作空间的大小由自身大小决定。共用体的空间用 最大的成员 决定union data{ char a; short b; int c;};void test05(..

2022-05-23 23:08:34 193

原创 C杂讲 位段(位域)

目录知识点1【位段概念】知识点2【位域操作】知识点3【无意义位段】知识点3【应用场景】知识点1【位段概念】在结构体中,以位为单位的成员,咱们称之为位段(位域)struct packed_data{ unsigned int a:2; //成员a只占unsigned int类型中的2位unsigned int b:6; unsigned int c:4; unsigned int d:4; // a b c d相邻位域unsigned int i; //..

2022-05-23 22:53:34 401

原创 C杂讲 结构体对齐

目录知识点1 【结构体对齐问题】知识点2【结构体体嵌套结构体】知识点3【强制内存对齐】知识点4【拓展求结构体成员的偏移量】知识点1 【结构体对齐问题】1、知识点的引入:structdata1{chara;//1Bintb;//4B};voidtest01(){printf("%d\n",sizeof(structdata1));//8B为啥?}2、对齐规则(默认对齐)第一步:确定分配单位(...

2022-05-23 22:42:38 244 2

原创 C杂讲 结构体与指针

目录知识点1【结构体指针】知识点2【结构体指针作为函数的参数】知识点3【结构体成员指针】知识点1【结构体指针】案例:结构体指针#include<stdio.h>typedef struct{ int num; char name[16]; int age;}STU;//STU 是结构体类型void test01(){ STU lucy={100,"lucy",18}; STU *p = &lucy; prin...

2022-05-23 22:20:42 585

原创 C杂讲 结构体初讲

知识点1【结构体类型的定义形式】//struct 是结构体关键字 stu是结构体类型名//使用结构体类型 必须是 struct stu//num name age 叫做结构体中的成员//定义结构体类型的时候 不要给成员 赋值(重要)//定义结构体类型的时候 并没有分配空间 所以 不能给成员赋值struct stu{ int num=10;//4B char name[32];//32B int age; //4B };//一定要记得有;号//结构体中的成员 拥有独

2022-05-23 22:09:01 112

原创 C杂讲 字符串格式化 组包与解包

知识点1【sprintf组包】案例:int sprintf(buf,"格式",数据)//buf:用来存放组好的报文//"格式":按照格式组包//数据:各个零散的数据返回值:返回值的是组好的报文的实际长度(不包含'\0')void test06(){ int year = 2020; int mon = 2; int day = 24; int len = 0; //需求:将2020 2 24组成一个"2020年2月24日" char buf[128]="";

2022-05-23 21:57:04 361

原创 C杂讲 字符串处理函数

目录知识点1【strlen测量字符换长度】知识点2【strcpy strncpy字符串拷贝】知识点3【strcat字符串的拼接】知识点4【strncat拼接前n个】知识点5【strcmp字符串的比较】(整个字符串的比较)知识点6【strchr字符查找函数】知识点7【strstr字符串查找】知识点8【atoi atol atof 】将字符串转化为数值知识点9【字符串切割函数 strtok】C语言string库函数中,大多以str开头的字符串处理函数 都是遇到'\0'

2022-05-23 21:46:24 1204

原创 C杂讲 动态内存分配

目录知识点1【malloc函数 和 free函数】malloc函数free函数知识点2【calloc函数】知识点4【realloc动态追加或减少空间】知识点5【堆区空间使用的注意事项】知识点6【防止多次释放】知识点1【malloc函数 和 free函数】malloc函数#include<stdlib.h>void *malloc(unsigned int num_size);形参:num_size需要申请空间大小的字节数。返回值: ..

2022-05-23 10:53:05 143

原创 C杂讲 函数与指针

目录知识点1【多级指针】知识点2【指针变量作为函数的参数】知识点3【一维数组名作为函数的参数】知识点4【二维数组名作为函数的参数】知识点5【指针作为函数的返回值】知识点12【函数名 代表的是函数的入口地址】知识点1【多级指针】知识点2【指针变量作为函数的参数】1、如果想在函数内部 修改 外部变量的值 就需要将外部变量的地址 传递给函数(以指针变量作为函数的参数)(重要!!!!)知识点引入:void my_swap(int a,int b)//a=da

2022-05-23 10:43:10 190

原创 C杂讲 数组与指针

目录知识点1【指针数组】知识点2【数组指针】总结:知识点3【二维数组的分析】知识点4【数组指针 与 二维数组的关系】(了解)知识点5【任何维度的数组 在物理存储上 都是一维的】(了解)知识点1【指针数组】指针数组:本质是数组 只是数组的每个元素 是指针。案例:void test01(){ int num1 = 10; int num2 = 20; int num3 = 30; //指针数组 int *arr[3]={&num1, ..

2022-05-23 10:25:30 144

原创 C杂讲 数组元素指针

目录知识点1【数组元素的指针】知识点2【数组的[]和*()的关系】(重要)知识点3【arr 和 &arr的区别】(了解)知识点4【指向同一数组的两个元素的指针变量 间关系】知识点1【数组元素的指针】案例:通过数组元素的指针变量 遍历 数组的元素void test05(){ int arr[5]={10,20,30,40,50}; int n = sizeof(arr)/sizeof(arr[0]); int i=0; //p保存了 第0个...

2022-05-20 10:35:01 357

原创 C杂讲 指针变量

目录知识点1【指针变量的初始化】知识点2【&取地址符 和 *指针解引用符 区别】知识点3【指针的注意事项】(重要)1、void 不能定义变量2、void *可以定义变量3、不要对 没有初始化的 指针变量 取*4、不要对 初始化为NULL的指针变量 取*5、不要给 指针变量 赋普通的数值。6、指针变量不要操作越界的空间。知识点1【指针变量的初始化】void test02(){ int num = 10; int data = 200; .

2022-05-20 10:33:10 213

原创 C杂讲 内存与指针

目录知识点1【内存地址的概述】知识点2【指针变量概念】知识点3【定义指针变量】(重要)知识点4【指针变量的使用】知识点8【指针变量的类型】(重要)知识点1【内存地址的概述】系统给内存的每一个字节 分配一个编号 而这个编号 就是内存地址。内存地址 也叫 指针。 指针 就是 地址 地址 就是 指针。知识点2【指针变量概念】指针变量:本质就是一个变量 只是这个变量 存放 是内存的地址编号(地址/指针)。在32位平台 任何类型的地址编号 都是4字节。..

2022-05-19 10:38:10 428 4

原创 C杂讲 数据编码与存取

知识点1【原码 反码 补码】注意:无符号数,正数:他们的 原码==反码==补码负数:反码=原码的符号位不变 其他位取反补码=反+1.(重要):负数在计算机中存储的是补码。计算机 为啥 要补码?以1字节分析:如果没有补码:6-10== -46+(-10) == -40000 01101000 1010--------------1001 0000 == -16(错误)如果有补码:0000 01101111 0110--------..

2022-05-19 10:20:58 114

原创 C杂讲 gcc编译过程与预处理

目录知识点1【gcc编译】知识点5【头文件包含<>,""】知识点6【define 宏】1、不带参数的宏2、带参数的宏 (宏 函数)3、带参数的宏(宏函数) 和 普通函数 有啥区别知识点7【条件编译】知识点1【gcc编译】#include<stdio.h>预处理:头文件包含、宏替换、条件编译、删除注释 不做语法检查编译:将预处理后的文件 生成 汇编文件 语法检查汇编:将汇编文件 编译 二进制文件链接:将众多的二进制文件.

2022-05-18 23:36:25 469

原创 C杂讲 内存分区与变量的关系

目录知识点1【内存的分区】知识点2【普通局部变量、普通全局变量、静态局部变量、静态全局变量】1、普通局部变量2、普通全局变量3、静态局部变量4、静态全局变量知识点3【全局函数(普通函数) 和 静态函数(局部函数)】1、全局函数:普通函数2、静态函数(局部函数)知识点1【内存的分区】知识点2【普通局部变量、普通全局变量、静态局部变量、静态全局变量】1、普通局部变量定义形式:在{}里面定义的普通变量 就是普通局部变量。作用范围:离它最近的{

2022-05-18 23:26:18 71

原创 C杂讲:运算符

知识点1【算术运算符】+、-、*、/、%等a / b: 取整 (a,b可以为整数,也可以为浮点数 如果a b为整数 表示相除后取整 如果 a b只要有一个为浮点数 则表示除法运算)a % b: 取余 必须为整数void test06(){ printf("%d\n", 5/2);//取整 2 printf("%d\n", 5%2);//余数 1}int main(int argc,char *argv[]){ test06(); return 0;}案例:键盘输.

2022-05-18 10:36:56 215

原创 C杂讲:数据类型转换

目录知识点1【自动类型转换】知识点2【案例:有符号 和无符号的转换】知识点3【案例:int double的转换】知识点4【案例:char 和short的类型转换】知识点5【案例:强制类型转换】知识点1【自动类型转换】知识点2【案例:有符号 和无符号的转换】void test02(){ int data1 = -20; unsigned int data2 = 10; //有符号data1和无符号data2参加计算的时候 //会先将data1转换成无符号

2022-05-18 09:54:20 286

原创 C杂讲:常量与变量

目录知识点1【常量与变量概念】1、常量 值不能被修改 (千万不能反过来说:值不能修改就是常量)2、变量 系统根据变量的类型 开辟对应的空间 其值可以被修改知识点2【整型变量的操作-读、写】取值、赋值知识点3【实型 常量】知识点4【字符常量和变量】(重要)1、字符常量 char知识点1【常量与变量概念】1、常量 值不能被修改 (千万不能反过来说:值不能修改就是常量)10 20 4.14 ‘a’ "abcd"2、变量 系统根据变量的类型 开辟对应的空间 其值.

2022-05-18 09:45:48 219

空空如也

空空如也

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

TA关注的人

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