自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 左数右指的深入理解(必看)

在C语言的学习里面,也就是笔记24课里面学过的指针的本质。在那里我们说过一个口诀,左数右指当 const 出现在 * 号左边时指针指向的数据为常量,当 const 出现在 * 号右边时指针本身为常量。我在写cpp代码总是会以为const char* s就代表字符串常量,所以我们来分析一下const char* s 和char* const s 的区别:对于const char* s...

2019-08-31 19:07:13 1306

原创 3、补码

1、补码的表示(1)补码概念的引入无模运算:有模运算:所以从这里得出结论减法运算可以转化成加法运算,减去一个数等于加上这个数的补数,也就是补码。补码 = 模+真值2、补码的定义正数的时候,补码就是它本身。负数的时候,补码就等于模+真值。定点小数的补码定义小数能表示的最大的数为1.111…111,所以小数的模为2定点整数的补码定义整数能表示的最大的数为01111…1...

2019-08-29 12:16:24 1534 6

原创 2、原码

1、原码:符号位 + 绝对值,最高位为0表示为正数,最高位为1表示为负数定点小数的原码定义:定点整数的原码定义: 2、例题(35)2 = (0010 0011)2(-35)2 = (1010 0011)2(0.8125)2 = (0.1101000)2(1.8125)2 = (1.1101000)23、原码的性质上面表示范围解析:定点整数:   正方向最大的数肯...

2019-08-29 11:37:07 2266

原创 1、数值数据的编码

1、例:将十进制数730.8125转换成二进制数解:整数部分的转换:小数部分的转换:

2019-08-29 10:35:15 850

原创 32、C++中的字符串类

1、历史遗留问题C语言不支持真正意义上的字符串C语言用字符数组和一组函数实现字符串的功能C语言不支持自定义类型,因此无法获得字符串的类型2、解决方案从C到C++的进化过程引入了自定义类型在C++ 中可以通过类完成字符串类型的定义问题:C++中的原生类型系统是否包括字符串类型?3、标准库中的字符串类C++ 语言直接支持C语言的所有概念C++ 语言中没有原生的字符串类型...

2019-08-23 10:47:13 334

原创 31、初探C++标准库

1、有趣的重载操作符 << 的原生意义是按位左移,例: 1 << 2 ;其意义就是将整数 1 按位左移 2 位,即 0000 0001——> 0000 0100重载左移操作符,将 变量或常量 左移到 一个对象 中!我们可以写一个重载函数看看会发生什么?Console 的意思就是命令行#include <stdio.h>class Consol...

2019-08-22 22:15:57 256

原创 30、完善的复数类

1、复数类应该具有的操作— 运算:+、-、*、/— 比较:==,!=— 赋值:=— 求模:modulus2、完善的复数类利用操作符重载— 统一复数和实数的运算方式— 统一复数和实数的比较方式 Complex operator +(const Complex& p) Complex operator -(const Complex& p) Complex o...

2019-08-22 20:26:41 324

原创 29、操作符重载的概念

1、需要解决的问题下面的复数解决方案是否可行?#include <stdio.h>class Complex{private: int a; int b;public: Complex() { this->a = 0; this->b = 0; } Complex(int a,int b) { this->a = a; ...

2019-08-22 17:48:43 102

原创 28、类中的函数重载

1、

2019-08-22 12:12:37 540

原创 27、友元的尴尬能力

1、友元的概念什么是友元?— 友元是C++ 中的一种关系— 友元关系发生在函数与类之间或者类与类之间— 友元关系是单向的,不能传递左边的函数是右边类的友元,左边的函数就成了友元2、友元的用法友元可以直接访问具体类的所有成员在类中以 friend 关键字声明友元类的友元可以是其它类或者具体函数友元不是类的一部分友元不受类中访问级别的限制3、友元的语法在类中用 f...

2019-08-22 12:00:29 139

原创 26、二阶构造模式

1、构造函数的回顾关于构造函数— 类的构造函数用于对象的初始化— 构造函数与类同名并且没有返回值— 构造函数在对象定义时自动被调用问题1、如何判断构造函数的执行结果?2、在构造函数中执行 return 语句会发生什么?3、构造函数执行结束是否意味着对象构造成功?#include <stdio.h>class Test{private: int mi; ...

2019-08-21 16:05:10 220

原创 25、类的静态成员函数

1、上个程序未达到需求随时可以获取当前对象的数目(failure)错误原因:上一个程序如果我们没有定义对象,那怎么输出对象的数目呢?我想到的解决方案是把静态局部变量变成公有。这样可以不用通过对象,直接通过类名就可以直接访问静态局部变量。#include <stdio.h>class Test {public: static int sCount;public: T...

2019-08-21 11:57:25 681

原创 24、类的静态成员变量

1、成员变量的回顾通过对象名能够访问 public 的成员变量每个对象的成员变量都是专属的成员变量不能在对象之间共享新的需求:统计在程序运行期间某个类的对象数目保证程序的安全性(不能使用全局变量)随时可以获取当前对象的数目程序:失败的解决方案1#include <stdio.h>class Test {private: int mCount;pu...

2019-08-21 10:44:06 460

原创 23、经典问题解析二以及const 对象

1、关于析构的疑问当程序中存在多个对象时,我们之前确定了对象的构造顺序:比如局部对象按照程序流,堆对象当程序执行流到达 new 语句时创建对象,全局对象的创建顺序是不确定的。所以,我们如何确实这些对象的析构顺序呢?单个对象创建时构造函数的调用顺序1、调用 父类 的构造过程(后续课程讲解)2、调用成员变量的构造函数(调用顺序与声明顺序相同)3、调用类自身的构造函数析构函数对应构造函...

2019-08-20 12:07:44 355

原创 22、神秘的临时对象

1、有趣的问题下面的程序输出什么?为什么?#include <stdio.h>class Test{private: int mi;public: Test(int i) { mi = i; } Test() { Test(0); } void print() { printf("mi = %d\n", mi); }};int m...

2019-08-19 17:05:09 239

原创 21、对象的销毁

1、对象的销毁一般而言,需要销毁的对象都应该做清理解决方案— 为每个类都提供一个 public 的 free 函数— 对象不再需要时立即调用 free 函数进行清理class Test{private: int* p;public: Test() { p = new int; } void free() { delete p; }};存在的问题—...

2019-08-19 15:45:04 299

原创 20、对象的构造顺序

问题:C++中的类可以定义多个对象,那么对象的构造顺序是怎样的?1、对象的构造顺序一对于局部对象— 当程序执行到流 到达对象的定义语句时进行构造...

2019-08-18 11:58:46 201

原创 19、初始化列表的使用(一个类调用另一个类的程序)

1、问题:类中是否可以定义const成员?下面的类定义是否合法?— 如果合法,ci 的值是什么,存储在哪里?class Test{private: const int ci;public: int getCI() { return ci; }};程序:#include <stdio.h>class Test{private: const in...

2019-08-16 20:48:42 772

原创 18、对象的构造(下)

1

2019-08-16 10:31:02 96

原创 17、对象的构造(中)

1

2019-08-16 10:30:29 98

原创 16、对象的构造(上)

1

2019-08-16 10:29:57 78

原创 15、类的真正形态

问题:经过不停的改进,结构体struct变得越来越不像它在C语言中的样子1、类的关键字struct 在C语言中已经有了自己的含义,必须继续兼容在C++中提供了新的关键字 class 用于类定义class 和 struct 的用法是完全相同的class 和 struct 有什么区别?在用 struct 定义类时,所有成员的默认访问级别为 public在用 class 定义类时,所...

2019-08-15 20:45:07 121

原创 14、类和封装的概念

1、类的封装类通常分为以下两个部分1、 类的实现细节2、 类的使用方式我们只要会用就行,具体它是怎么来的,我们并不关心。当使用类时,不需要关心其实现细节当创建类时,才需要考虑其内部实现细节例:封装的概念— 根据经验:并不是类的每个属性都是对外公开的   如:女孩子不希望别人知道自己的体重和年龄   如:男孩子不希望别人知道自己的身高和工资— 而一些类的属性是对外公...

2019-08-15 17:57:20 239

原创 13、进阶面向对象(下)

1

2019-08-15 15:32:47 73

原创 12、进阶面向对象(上)

1

2019-08-15 15:32:04 110

原创 整形提升

菜鸟老师的指导:1、对c的类型转换不会影响c,只会根据c的值得到另一个类型的值,2、进行算数运算(+、-、*、/),不同类型必须转化为同一类型才能运算,算术转换原则:整形提升:对于所有比int小的类型(char,short,unsigned short),首先提升为int程序一:#include <stdio.h>int main(){ unsigned short ...

2019-08-15 11:19:31 160

原创 程序的内存分配

C++对于局部对象,常量存在栈上;对于全局对象,常量存在全局/静态存储区;对于字面量常量(字符串常量)

2019-08-14 19:33:46 107

原创 11、经典问题解析一

1、关于const的疑问问题:const 什么时候是只读变量,什么时候是常量?

2019-08-14 19:25:09 105

原创 10、新型的类型转换

1、强制类型转换首先我们提出一个问题:C语言已经有强制类型转换,为什么C++还有创造新型的类型转换呢?C方式的强制类型转换— (Type)(Expression)— Type(Expression)typedef void(PF)(int);struct Point{ int x; int y;};int v = 0x12345;PF* pf = (PF*)v;ch...

2019-08-13 22:37:17 222

原创 9、C++中的新成员new及命名空间基本概念

1、动态内存分配C++中的动态内存分配— C++中通过 new 关键字进行动态内存申请(malloc是一个库函数)— C++中的动态内存申请是基于类型进行的(malloc内存申请基于字节)— delete 关键字用于内存的释放变量申请:Type* pointer = new Type;//..delete pointer;数组申请:Type* pointer = new ...

2019-08-13 21:40:28 358

原创 8、函数重载分析(下)

1、重载与指针下面的函数指针将保存哪个函数的地址?typedef int(*PFUNC)(int a)int c = 0;PFUNC p = func;c = p(1);很明显就是第一个函数。函数重载遇上函数指针— 将重载函数名赋值给函数指针时(上面的第三条语句)1、根据重载规则挑选与函数指针参数列表一致的候选者2、严格匹配候选者的函数类型与函数指针的函数类型#i...

2019-08-13 17:58:23 134

原创 7、函数重载分析(上)

1、重载的概念重载(Overload)— 同一个标识符在不同的上下文有不同的意义— 如:用编程语言去模仿自然语言,自然语言一个动词加不同的名词可以表示不同的事,编程语言中最接近动词的就是函数。2、C++中的函数重载函数重载— 用同一个函数名 定义 不同的函数— 当函数名和不同的参数搭配时函数的意义不同int func(int x){ return x;}int ...

2019-08-13 15:21:15 301

原创 6、函数参数默认值和占位参数

1、函数参数的默认值C++中可以在函数声明时为参数提供一个默认值当函数调用时没有提供参数的值,则使用默认值

2019-08-12 22:47:58 305 1

原创 5、内联函数分析

1、常量与宏的回顾C++中的const常量可以替代宏常数定义,如:const int A = 3;——> #define A 3C++中是否有解决方案替换宏代码片段呢?2、内联函数C++中推荐内联函数替代宏代码块片段C++中使用 inline 关键字声明内联函数inline func(int a, int b){ return a < b ? a : b;}...

2019-08-12 22:23:32 154

原创 4、引用的本质分析

1、引用的意义引用作为变量别名而存在,因此在一些场合可以代替指针引用相对于指针来说具有更好的可读性和实用性SWAP函数的实现对比:void SWAP(int& a,int& b){ int t = a; a = b; b = t;}void SWAP(int* a,int* b){ int t = *a; *a = *b; *b = t;}注:...

2019-08-12 19:58:16 245

原创 3、布尔类型和引用

1、C++中的布尔类型— C++在C语言的基本类型系统之上增加了bool— C++中的bool可取的值只有true和false— 理论上bool只占一个字节注意:true代表真值,编译器内部用1来表示false代表非真值,编译器内部用0来表示2、布尔类型的值bool类型只有true(非0)和false(0)两个值C++编译器会将非0值转换成true,0值转换成false下面的...

2019-08-12 15:40:43 1142

原创 2、进化后的 const 分析

1、C语言中的constconst修饰的变量是只读的,本质还是变量const修饰的局部变量是在栈上分配空间const修饰的全局变量在全局数据区的只读存储区分配空间,也就是全局变量呆的地方const只在编译期有用,在运行期无用const修饰的变量不是真正的常量,它只是告诉编译器这个变量不能出现在赋值符号的左边。...

2019-08-11 22:26:50 126

原创 1、从C到C++的升级

1、C与C++的关系c++继承了所有的c特性c++在c的基础上提供了更多的语法和特性c++的设计目的就是运行效率和开发效率的统一c++的两个++,第一个 + 指类型的加强,第二个 + 指面向对象的支持2、C到C++的升级升级一:C++更强调语言的实用性所有的变量都可以在需要使用时在定义int c = 0;for (int i = 0; i < 10; i++){...

2019-08-11 21:40:09 211

原创 48、函数设计原则

1、函数设计原则函数从意义上应该是一个独立的功能模块函数名要在一定程度上反映函数的功能函数参数名要能够体现参数的意义尽量避免在函数中使用全局变量当函数参数不应该在函数体内部被修改时,应该加上const声明如果参数是指针,且仅作输入参数,则应加上const声明不能省略返回值的类型— 如果函数没有返回值,应该声明为 void 类型对参数进行有效性的检查·— 对于指针参数的检查尤为...

2019-08-11 20:10:03 176

原创 47、递归函数分析

1、递归函数函数体内部可以调用自己递归函数— 函数体中存在自我调用的函数递归函数是递归的数学思想在程序设计中的应用— 递归函数必须有递归出口— 函数的无限递归将导致程序栈溢出而崩溃2、递归函数设计示例一用递归的方法编写函数求字符串长度#include <stdio.h>#include <malloc.h>int strlen(const c...

2019-08-11 19:50:57 564

321312312313

3213123213123

2024-09-12

FS65SBC-SDK-SW.zip

FS65SBC-SDK-SW.zip

2024-08-29

GTM_ATOM_PWM_DTM_Synchronize_KIT_TC364_TRB.zip

GTM_ATOM_PWM_DTM_Synchronize_KIT_TC364_TRB.zip

2024-06-05

空空如也

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

TA关注的人

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