- 博客(19)
- 收藏
- 关注

原创 C++基础
引用 引用不是定义一个新的变量,而是给已存在变量取一个别名,编译器不会为引用变量开空间,它和它引用的变量共用同一块内存空间 类型& 引用变量名(对象名) = 引用实体 引用类型必须和引用实体是同种类型的 1.引用的特性 1.引用在定义时必须初始化 2. 一个变量可以有多个引用 3. 引用一旦引用一个实体,再不能引用其他实体 2.指针和引用赋值:权限的缩小是可以成功的;但是权限的放大会报错 ...
2019-07-31 16:01:20
173
原创 STL模拟实现
GITHUB链接: https://github.com/Zruzhuo/C_Realize/tree/master/stl_string
2020-02-24 17:18:45
364
原创 C++内存管理
new和delete操作符 C++通过new和delete操作符进行动态内存管理 new/delete操作内置类型 申请和释放单个元素的空间,使用new和delete操作符。申请和释放连续的空间,使用new[]和delete[]。 new/delete操作自定义类型 class A {}; void test() { A* p1 = new A;//申请单个A类型的对象 delete p1;...
2020-02-23 20:14:53
160
原创 类与对象(二)
类与对象 构造函数 1.构造函数体赋值 在创建对象时,编译器调用构造函数后,对象中已经有了一个初始值,但是不能称作类对象成员的初始化,构造函数体中的语句只能称作赋初值,因为初始化只能初始化一次,而构造函数体内可以多吃赋值。 2.初始化列表 初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个“成员变量”后跟一个放在括号中的初始值或表达式。 class A { public: A(...
2020-02-23 19:24:51
201
原创 类与对象(一)
类与对象的初步认知 类的定义 类对象模型 1.如何计算类对象的大小 一个类的大小,实际上就是类中成员变量之和,但要注意内存对齐。空类的大小为一个字节,原因是编译器给了空类一个字节来唯一标识这个类。 ...
2020-02-23 18:26:47
142
原创 文件操作
文件操作 在程序设计中,文件一般有两种:程序文件、数据文件 程序文件 包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境下后缀为.exe)。 数据文件 文件的内容不一定是程序,而是程序运行时读写的数据。 文件名 一个文件要有一个唯一的文件标识,以便用户识别和引用。 文件名包含三部分:文件路径+文件名主干+文件后缀。例如:c:\code\tes...
2020-02-21 20:07:57
165
原创 动态内存管理
动态内存函数 malloc和free函数 malloc和free函数的头文件为stdlib.h void* malloc(size_t size); malloc函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。 如果开辟成功,则返回一个指向开辟好空间的指针。 如果开辟失败,则返回一个NULL指针,因此malloc函数的返回值一定要检查 返回值类型为void*,因为malloc函数并...
2020-02-21 19:41:22
129
原创 自定义类型:结构体、枚举、联合
结构体 结构体的声明 结构体是一些值得集合,这些值称为成员变量,结构体的每个成员可以使不同类型的变量,也可以是其他自定义类型,但是如果是自引用,那么只能用指针。 typedef struct Node//重命名(类型名) { int x; struct Node* next; }Node; Node p1;//定义结构体变量 Node p2 = {x. y};//定义变量的同时赋初值 结构体...
2020-02-21 17:42:16
111
原创 编译链接、宏替换、条件编译
编译链接 程序的编译分为4个阶段 预处理:展开头文件/宏替换/去掉注释/条件编译 (test.i main.i) 编译:检查语法,生成汇编语言 (test.s main.s) 汇编:将汇编语言转换成机器语言 (test.o main.o) 链接:链接到一起生成可执行文件 (a.out) 简单的一些预处理命令: 预处理命令 含义 ...
2019-11-08 21:19:56
931
原创 str函数模拟实现
strlen函数 szie_t strlen(const char* str) 计算str字符串的长度 注意: 字符串以‘\0’为结束标志,strlen返回的是字符串中‘\0’之前的字符个数(不包括’\0’) 函数返回值为size_t,是无符号的 模拟实现: size_t my_strlen(const char* str) { assert(str); char* str1 = str...
2019-09-23 21:19:11
823
原创 数据的存储
整形的存储 原码、反码、补码 计算机中的符号数有三种表示方法,即原码、反码、补码,它们均有符号位和数值位两部分,符号位用0表示正。用1表示负,而数值位则各不相同。 原码:直接将数字翻译成二进制 反码:将原码符号位不变,数值位按位取反 补码:反码+1就是补码 正数的原、反、补码都相同 对于整形来说,数据内存储的是补码,因为使用补码可以将符号位和数值位统一处理;而且加法和减法也可以统一处理(因为CPU...
2019-09-18 16:30:15
156
原创 C语言操作符要点及整形提升截断
操作符 - 算术操作符 + - * / % %操作符的两个操作数必须为整数 /操作符的两个操作数如果有浮点数,则执行的是浮点数除法 - 移位操作符 移位操作符不会改变自身的值 对于移位操作符,不要移动负数位 << 左移操作符 >> 右移操作符 左移操作符移位规则:左边抛弃,右边补0 右移操作符移位规则:1.逻辑移位 左边...
2019-09-18 14:57:16
260
原创 二叉树
树的概念及结构 1.树的概念 树是一种非线性的数据结构,它具有以下的特点:每个结点有零个或多 个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结 点可以分为多个不相交的子树 。 节点的度:一个节点含有的子树的个数称为该节点的度; 如上图:A的为6 叶节点或终端节点:度为0的节点称为叶节点; 如上图:B、C、H、I…等节点为叶节点 非终端节点或分支节点:...
2019-07-31 17:19:40
211
1
原创 栈和队列的实现
栈的概念及结构 栈:一种特殊的线性表,只允许在固定的一端进行插入和删除操作。进行数据插入删除操作的一端称为栈顶,另一端称为栈底。栈中的元素遵循先进后出(后进先出)的原则 入栈:栈的插入操作叫做入栈/进栈/压栈。入数据在栈顶 出栈:栈的删除操作叫做出栈。出栈也在栈顶 栈的实现 Stack.h #pragma once #include<stdio.h> #include<std...
2019-07-30 17:35:12
133
原创 链表的实现
链表的概念与结构 链表是一种物理存储结构非连续、非顺序的存储结构,数据元素的逻辑顺序是由链表中的指针链接次序实现的 实际中链表结构多样,主要分为以下几种: 单向,双向 循环,非循环 带头,不带头 最常用的有两种: 无头单向非循环链表:结构简单,但实现较复杂,一般不单独存储数据 带头双向循环链表:结构复杂,一般用来单独存储数据。实际中使用的链表数据结构都是带头双向循环链表,因为实现较为简单 链表的实...
2019-07-30 17:03:58
269
原创 顺序表的实现
概念及结构 顺序表是把数据元素存储在一段物理地址连续的存储单元上的线性结构,一般采用数组存储,增删改查等操作也在数组上完成。 顺序表一般可分为: 1.静态顺序表:使用定长数组存储 2.动态顺序表:使用动态开辟的数组存储 而静态顺序表有很大的缺陷,只适用于知道要存多少数据的情况,而且容易造成空间不足或者浪费,所以现实一般使用动态顺序表。以下是动态顺序表的实现: 代码实现 SList.h #pragm...
2019-07-30 15:50:35
213
原创 时间复杂度与空间复杂度
算法效率 算法效率分两种,时间效率和空间效率。时间效率就是时间复杂度,主要用来衡量一个算法的运行速度。空间效率就是空间复杂度,主要用来衡量一个算法的额外空间。在现在以及未来,计算机的存储容量已经达到了很高的程度,所以不用过多的考虑空间复杂度 时间复杂度 算法中基本操作的执行次数就是算法的时间复杂度。 而计算时间复杂度时,并不需要精确的数值,只需要大概的执行次数,所以可以使用大O的渐进表示法: 1....
2019-07-30 15:30:51
259
原创 C语言指针详解
指针是什么 指针就是C语言的灵魂。学习C语言,如果没有学好指针,那就没有学好C语言最核心最重要的内容。 具体来说指针就是变量,用来存放地址的变量,而地址是唯一标识一块地址空间的。 所以存放在指针中的值都被当做地址处理。 指针的大小 指针的大小与平台有关,在32位平台上指针大小是4个字 节,在64位平台上指针大小是8个字节。 那么,为什么指针的大小会与平台有关呢? 首先,对于32位的机器,...
2019-05-14 20:42:23
370
原创 用C语言实现简单的计算器
功能介绍 用C语言实现整形简单的加减乘除操作 代码实现 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> int main() { while (1) { double x = 0, y = 0, ret = 0;//定义运算量以及结果 char operator;/...
2019-05-10 16:32:21
26726
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人