![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++ 编程设计
文章平均质量分 78
C++ 编程语言
MR_Promethus
XDU PBR信号处理 研二在读。
展开
-
【C 数据结构-动态内存管理】5. 内存紧缩(内存碎片化处理)
文章目录【 1. 堆 】【 2. 分配算法 】【 3. 回收算法 】【 1. 堆 】无论是边界标识法还是伙伴系统,都是将空闲的存储空间链接成一个链表,即可利用空间表,对存储空间进行分配和回收。本节介绍另外一种动态内存管理的方法,使用这种方式在整个内存管理过程中,不管哪个时间段,所有未被占用的空间都是地址连续的存储区,这些 地址连续的未被占用的存储区 在编译程序中称为 堆。假设存储区的初始状态如上图所示,若采用本节介绍的方法管理这块存储区,当 B 占用块运行完成同时所占的存储空间释放后,存储区的状原创 2024-05-07 22:03:22 · 482 阅读 · 0 评论 -
【C 数据结构-动态内存管理】4. 无用单元收集(垃圾回收机制)
例如,在C语言中,用户可以通过 malloc 和 free 两个功能函数来动态申请和释放存储空间,当用户使用 malloc 申请的空间使用完成后,没有使用 free 函数进行释放,那么该空间就会成为无用单元。:假设使用 malloc 申请了一块存储空间,有。是一块用户不再使用,但是系统无法回收的存储空间。,当其中一个指针完成使命后,私自将该存储空间使用。所有的存储空间无论是处于使用还是空闲的状态,,数据结构中称这种访问为悬挂访问。原创 2024-05-07 21:39:41 · 560 阅读 · 0 评论 -
【C 数据结构-动态内存管理】3. 伙伴系统管理动态内存
2m2021222m。原创 2024-05-07 20:54:26 · 888 阅读 · 0 评论 -
【C 数据结构-动态内存管理】2. 边界标识法管理动态内存
【代码】【C 数据结构-动态内存管理】2. 边界标识法管理动态内存。原创 2024-05-07 20:26:38 · 960 阅读 · 0 评论 -
【C 数据结构-动态内存管理】1. 动态内存管理机制
内存碎片通过利用数据结构,内存碎片化的问题能够得到有效的解决,从而我们能更有效地利用内存。原创 2024-05-06 22:39:22 · 987 阅读 · 0 评论 -
中缀表达式求值
【代码】中缀表达式求值。原创 2024-04-17 20:42:40 · 340 阅读 · 0 评论 -
C++ 十进制转十六进制
【代码】C++ 十进制转十六进制。原创 2024-04-08 09:39:44 · 521 阅读 · 0 评论 -
C++ 学习笔记
当 value 类型为 char* 时,cout会从 value 这个 char * 地址开始遍历地址对应的元素直至遇到 ‘\0’ 字符。原创 2024-04-08 17:29:28 · 879 阅读 · 0 评论 -
【C++上层应用】6. Web编程*
公共网关接口(Common Gateway Interface,CGI),是一套标准,定义了信息是如何在 Web 服务器和客户端脚本之间进行交换的。CGI 规范目前是由 NCSA 维护的,NCSA 定义 CGI 如下:公共网关接口(CGI),是一种用于外部网关程序与信息服务器(如 HTTP 服务器)对接的接口标准。原创 2023-11-21 15:08:09 · 150 阅读 · 0 评论 -
【C++上层应用】5. 多线程*
pthread_join() 子程序阻碍调用程序,直到指定的 threadid 线程终止为止。当创建一个线程时,它的某个属性会定义它是否是可连接的(joinable)或可分离的(detached)。只有创建时定义为可连接的线程才可以被连接。如果线程创建时被定义为可分离的,则它永远也不能被连接。原创 2023-11-21 10:24:58 · 264 阅读 · 0 评论 -
【C++上层应用】4. 信号/中断
不管我们想在程序中捕获什么信号,必须使用 signal 函数来注册信号,并将其与信号处理程序相关联。原创 2023-11-21 14:45:56 · 156 阅读 · 0 评论 -
【C++上层应用】3. 异常处理
我们可以通过继承和重载 exception 类来定义新的异常。实例:在这里,what() 是异常类提供的一个公共方法,它已被所有子异常类重载。这将返回异常产生的原因。int main()try//其他的错误。原创 2023-11-20 21:55:40 · 98 阅读 · 0 评论 -
【C++上层应用】2. 文件流
文件处理,必须在 C++ 源代码文件中包含头文件 和原创 2023-11-21 11:28:38 · 399 阅读 · 0 评论 -
【C++上层应用】1. 内存管理
在 函数内部 声明的所有变量都将占用栈内存:这是程序中未使用的内存,在程序运行时可用于。原创 2023-11-21 09:59:55 · 81 阅读 · 0 评论 -
【C++面向对象】12. 数据抽象*、数据封装*、接口/抽象类*
实例:把数字相加,并返回总和;公有成员 addNum 和 getTotal 是对外的接口,用户需要知道它们以便使用类。私有成员 total 是用户不需要了解的,但又是类能正常工作所必需的。访问标签出现的频率没有限制。每个访问标签指定了紧随其后的成员定义的访问级别。指定的访问级别会一直有效,直到遇到下一个访问标签或者遇到类主体的关闭右括号为止。C++ 程序中,任何带有公有和私有成员的类都可以作为数据抽象的实例。来定义类的抽象接口。在 C++ 中,我们使用。原创 2023-11-15 18:08:01 · 162 阅读 · 0 评论 -
【C++面向对象】11. 多态、虚函数、纯虚函数
多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。实例:基类 Shape 被派生为两个类,定义基类的指针,指针指向两个派生类的对象,分别调用派生类内部的成员函数 area()。height = b;public:public:// 程序的主函数。原创 2023-11-15 17:39:18 · 111 阅读 · 0 评论 -
【C++面向对象】10. 模板
【代码】【C++面向对象】15. 模板。原创 2023-11-16 23:13:32 · 98 阅读 · 0 评论 -
【C++面向对象】9. 重载
重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的。与其他函数一样,重载运算符有一个返回类型和一个参数列表。类 Ptr 的对象可用于访问类 X 的成员,使用方式与指针的用法十分相似。语句 p->m 被解释为 (p.operator->())->m。运算符 -> 必须是一个成员函数。返回类型必须是指针或者是类的对象。原创 2023-10-26 11:35:33 · 133 阅读 · 0 评论 -
【C++面向对象】8. 继承
private 成员只能被本类成员(类内)和友元访问,不能被派生类访问;protected 成员可以被派生类访问。如果未使用访问修饰符 access-specifier,则。(public 和 protected 成员)原创 2023-10-25 23:09:04 · 288 阅读 · 0 评论 -
【C++面向对象】7. 类的静态成员
无论创建多少个类的对象,静态成员都只有一个静态成员在类的所有对象中是共享的。原创 2023-10-24 23:29:31 · 114 阅读 · 0 评论 -
【C++面向对象】6. 指向类的指针
【代码】【C++面向对象】6. 指向类的指针。原创 2023-10-24 22:56:46 · 215 阅读 · 0 评论 -
【C++面向对象】5. this指针
只有成员函数才有 this 指针(友元函数没有 this 指针,因为友元不是类的成员),this 指针是所有成员函数的隐含参数。在成员函数内部,this指针 可以用来指向调用对象。原创 2023-10-24 22:29:03 · 123 阅读 · 0 评论 -
【C++面向对象】4. 内联函数
如果想把一个函数定义为内联函数,则需要在函数名前面放置关键字 inline,在调用函数之前需要对函数进行定义。如果已定义的函数多于一行,编译器会忽略 inline 限定符。在类定义中的定义的函数都是内联函数,即使没有使用 inline 说明符。实例x : y;// 程序的主函数return 0;原创 2023-10-24 10:40:11 · 73 阅读 · 0 评论 -
【C++面向对象】3. 友元
友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员,即可以访问类的所有成员。友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。整个友元类及其所有成员都是友元。原创 2023-10-23 09:40:35 · 200 阅读 · 0 评论 -
【C++面向对象】2.构造函数、析构函数
如果在类中没有定义拷贝构造函数,编译器会自行定义一个。如果类带有指针变量,并有动态内存分配,则它必须有一个拷贝构造函数。使用同一类中之前创建的对象来初始化新创建的对象。名称与类的名称是完全相同的,只是在前面加了个。类的构造函数是类的一种特殊的成员函数,它会。类的析构函数会在每次删除所创建的对象时执行。类的析构函数是类的一种特殊的成员函数,,也不会返回 void。原创 2023-10-19 21:56:25 · 515 阅读 · 0 评论 -
【C++面向对象】1. 类、对象
定义一个类,本质上是定义一个数据类型的蓝图。这实际上并没有定义任何数据,但它定义了类的名称意味着什么,也就是说,它定义了类的对象包括了什么,以及可以在这个对象上执行哪些操作。类定义是以关键字 class 开头,后跟类的名称。类的主体是包含在一对花括号中,类定义后必须跟着一个分号或一个声明列表。例如,我们使用关键字 class 定义 Box 数据类型,如下所示:class Boxpublic:// 盒子的长度// 盒子的宽度// 盒子的高度关键字 public 确定了类成员的访问属性。原创 2023-10-19 21:17:10 · 535 阅读 · 0 评论 -
【C++基础】14. 预处理器
我们已经看到,之前所有的实例中都有 #include 指令,这个宏用于把头文件包含到源文件中。C++ 提供了下表所示的一些预定义宏:宏描述LINE这会在程序编译时包含当前行号。FILE这会在程序编译时包含当前文件名。DATE这会包含一个形式为 month/day/year 的字符串,它表示把源文件转换为目标代码的日期。TIME这会包含一个形式为 hour:minute:second 的字符串,它表示程序被编译的时间。实例:return 0;原创 2023-11-20 22:56:44 · 348 阅读 · 1 评论 -
【C++基础】13. 输入输出流
C++ 预定义了一些 I/O 流对象来实现输入输出,这些 I/O 流对象关联相应设备(键盘、显示器等)并实现程序和设备之间的数据传输。C++ 预定义的 I/O 流对象有4个:cout 、cin 、cerr 和 clog,其中:cout 代表标准输出流,关联显示器;cin 代表标准输入流,关联键盘;cerr 和 clog 代表标准错误流,也关联显示器。iostream 和 using namespace std由于流对象的输入输出功能在 iostream 类库中实现,流对象则在名字空间 std原创 2020-07-28 13:37:04 · 853 阅读 · 1 评论 -
【C++基础】12. 命名空间
命名空间的定义使用关键字 namespace,后跟命名空间的名称,下面的命名空间定义可以是定义一个新的命名空间,也可以是为已有的命名空间增加新的元素,如下所示:// 代码声明 }为了调用带有命名空间的函数或变量,需要在前面加上命名空间的名称,如下所示:// code 可以是变量或函数实例:// 第一个命名空间// 第二个命名空间// 调用第一个命名空间中的函数// 调用第二个命名空间中的函数return 0;原创 2023-11-16 23:02:08 · 566 阅读 · 0 评论 -
【C++基础】11. 引用
1. 引用 引用就是 已存在的变量或常量等声明的别名,不分配内存空间。必须在创建时被初始化(指向一个对象), 一旦初始化后就不能指向另一个对象。#include <iostream> using namespace std; int main (){ // 声明变量 int i; double d; // 声明引用变量 int& r = i; double& s = d; i = 5; .原创 2021-01-07 16:01:03 · 259 阅读 · 0 评论 -
指针数组、数组指针
文章目录【 1. 指针数组 】这两个都是 形容词adj+名词n 的形式,前面是修饰作用,主要看后面的两个字是什么,因此指针数组是数组,而数组指针是指针。【 1. 指针数组 】主要看后面的两个字是什么(前面是修饰作用),因此指针数组是数组,而数组指针是指针。...原创 2021-01-14 17:23:54 · 181 阅读 · 0 评论 -
【C++基础】10. 指针
指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。不同数据类型的指针都是一个代表内存地址的长的十六进制数。唯一的不同是,指针所指向的变量或常量的数据类型不同。指针变量声明的一般形式为:type 是指针的基类型,它必须是一个有效的 C++ 数据类型;用来声明指针的星号 * 与乘法中使用的星号是相同的,但在这个语句中,星号用来指定一个变量是指针;var-name 是指针变量的名称。实例:有效的指针声明:int *ip;/* 一个整型的指针 */double *dp;原创 2023-10-15 22:51:59 · 184 阅读 · 0 评论 -
【C++基础】9. 数组
两个依次定义的数据地址间的大小具体由编译器自行决定。原创 2023-10-13 16:50:48 · 87 阅读 · 0 评论 -
【C++基础】8. 函数
C++ 中的函数定义的一般形式如下:在 C++ 中,函数由一个函数头和一个函数主体组成。返回类型:一个函数可以返回一个值。return_type 是函数返回的值的数据类型。有些函数执行所需的操作而不返回值,在这种情况下,return_type 是关键字 void。函数名称:这是函数的实际名称。函数名和参数列表一起构成了函数签名。参数:参数就像是占位符。当函数被调用时,您向参数传递一个值,这个值被称为实际参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可能不包含参数。原创 2023-09-09 16:36:47 · 165 阅读 · 0 评论 -
【C++基础】7. 控制语句
【代码】【C++基础】9. 控制语句。原创 2023-09-09 15:02:57 · 218 阅读 · 0 评论 -
【C++基础】6. 运算符
【定义】程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。【位运算符】范围:用于有符号和无符号的整型数,包括char short int long unsigned。基本位运算符共六种: ~ & | ^ << >>【基本位运算】...原创 2020-02-06 14:13:33 · 357 阅读 · 0 评论 -
【C++基础】5. 常量
在 C++ 中,有两种简单的定义常量的方式:1、使用 #define 预处理器。2、使用 const 关键字。把常量定义为大写字母形式,是一个很好的编程实践。原创 2023-09-05 22:43:34 · 539 阅读 · 0 评论 -
【C++基础】4. 变量
变量定义就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储。变量定义指定一个数据类型,并包含了该类型的一个或多个变量的列表,如下所示:在这里,type 必须是一个有效的 C++ 数据类型,可以是 char、wchar_t、int、float、double、bool 或任何用户自定义的对象,variable_list 可以由一个或多个标识符名称组成,多个标识符之间用逗号分隔。原创 2023-09-05 22:16:54 · 266 阅读 · 0 评论 -
【C++基础】3. 数据类型
【代码】【C++学习笔记】数据类型。原创 2023-09-04 22:17:22 · 396 阅读 · 0 评论 -
【C++基础】2. 注释
行语句注释//这是行语句注释段语句注释/*这是段语句注释*/可选择语句注释若 condition 条件为 true 执行 code1 屏蔽 code2,否则执行 code2 屏蔽 code1。#if condition code1#else code2#endif这种形式对程序调试也可以帮助,测试时使用 #if 1 来执行测试代码,发布后使用 #if 0 来屏蔽测试代码。...原创 2021-01-07 14:04:15 · 156 阅读 · 0 评论