![](https://img-blog.csdnimg.cn/20200101191339518.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C/C++
分享C代码相关的学习、工作笔记。
智驾
“面朝大海,春暖花开”
展开
-
C++实现,简单的命令行交互框架
在实际开发中,经常需要有对端测试程序,配合自己的程序,验证功能、逻辑等。面对繁杂、多变的需求,如果对端程序设计得不够灵活,则无法提升工作效率,如果能够与对端程序交互,通过命令行输入命令的方式完成测试验证,将大大提升工作效率,下面的示例程序是一个简单的命令行交互框架,各位小伙伴可以根据自己的需求添加命令即可,如果对你有帮助,请点赞、收藏,谢谢!原创 2024-06-06 01:50:27 · 534 阅读 · 0 评论 -
C++智能指针
在C++中,智能指针是一种替代原始指针的类模板,用于自动管理内存。智能指针的主要目标是帮助防止内存泄漏和其他与内存管理相关的问题。原创 2023-12-23 19:23:14 · 404 阅读 · 0 评论 -
一个简单的参数帮助框架,c实现
c语言实现的参数帮助框架源码,可自行扩展原创 2023-12-01 10:16:19 · 490 阅读 · 0 评论 -
博客摘录「 CMakeLists中的add_definitions()函数」2023年5月27日
这种可以在我们更改别人代码做实验时使用,既不对其源码进行破坏,又可以添加自己的功能。之前都是在程序中进行#define,有了这个后可以直接在编译的时候进行选择。原创 2023-05-27 10:27:49 · 121 阅读 · 0 评论 -
博客摘录「 std命名空间的bind和sys/socket.h中bind发生冲突」2023年5月17日
std命名空间的bind和sys/socket.h中bind发生冲突原创 2023-05-17 22:41:05 · 117 阅读 · 0 评论 -
“不平凡的代理初始值设定不受支持”,出现的原因及解决方法
写了个C的结构体,在结构体变量初始化的地方报错,之前从来没遇到过。查阅资料,引起这个错误的原因是,在g++编译的时候,结构体变量初始化赋值的顺序不能乱,博主漏赋值了一个变量导致的。...原创 2022-06-23 10:41:54 · 709 阅读 · 0 评论 -
【C++学习笔记】北京大学《程序设计实习》目录
记录本人学习北京大学《程序设计实习》课程的笔记目录。原创 2021-01-25 23:49:49 · 204 阅读 · 1 评论 -
c++中sprintf和sprintf_s的区别
转载自:https://blog.csdn.net/qq_37221466/article/details/81140901在此感谢原作者,以下是原文:sprintf_s是sprintf的安全版本,指定缓冲区长度来避免sprintf()存在的溢出风险,主要差在sprintf_s第二个参数,可以控制缓冲区大小sprintf/sprintf_s指的是字符串格式化命令,主要功能是把格式化的数据写入某个字符串中。sprintf 是个变参函数。使用sprintf 对于写入buffer的字符数是没有限制的,这转载 2020-12-17 15:13:23 · 841 阅读 · 0 评论 -
QT跨平台编程入门学习笔记 1.开始学习
1. 学习的目的为了学习界面编程;为了巩固同步进行的C++知识和技巧;为了了解跨平台。2. 环境搭建2.1 必备工具下载QT源码安装包http://download.qt.io点击进入archive/点击进入qt/点击进入5.9/点击进入5.9.9/下载qt-opensource-windows-x86-5.9.9.exe该安装包Windows 32位和6...原创 2020-07-19 20:04:24 · 302 阅读 · 0 评论 -
【Linux开发初步】00000001H_C结构体应用回顾(2)
程序在Linux环境下编译的,目的是回顾梳理一下之前的基础知识,方便忘的时候查看。/*********************************************** * File name: // book3.c * Author: // doublepeng * Version: // V1.0 * Description: // 测试、验证结构体数组、指针的用法。 * Other: // * Log: // 20原创 2020-07-12 21:32:06 · 197 阅读 · 0 评论 -
【Linux开发初步】00000000H_C结构体应用回顾(1)
目录原创 2020-07-10 17:18:12 · 352 阅读 · 0 评论 -
【面试算法系列】1-常用数据结构
目录1. 常用数据结构和技巧2. 数组、字符串3. 链表4. 栈5. 队列6. 双端队列7. 树1. 常用数据结构和技巧数组、字符串链表栈队列双端队列树2. 数组、字符串翻转字符串数组的优点:构建一个数组非常简单能让我们再O(1)的时间里根据数组的下标(index)查询某个元素数组的缺点:构建时必须分配一段连续的空间查询某个元素是否存在时需要遍历整个数组,耗费O(n)的时间(其中,n是元素的个数)删除和添加某个元素时,同样需要耗费O(n)的时间LeetCode原创 2020-07-05 11:21:50 · 212 阅读 · 0 评论 -
【C++学习笔记】 4-1 运算符重载—基本概念
目录1. 运算符2. 自定义数据类型与运算符重载3. 运算符重载4. 运算符重载为普通函数5. 运算符重载为成员函数1. 运算符2. 自定义数据类型与运算符重载3. 运算符重载4. 运算符重载为普通函数class Complex{ public: Complex(double r = 0.0, double i = 0.0){ real = r; imaginary = i; } double real; //real part原创 2020-07-05 09:30:56 · 359 阅读 · 0 评论 -
【C++学习笔记】 3-8 常量和常引用
目录1. 常量对象2. 常量成员函数3. 常量引用1. 常量对象如果不希望某个对象的值被改变,则定义该对象的时候可以在前面加上const关键字。class Demo{ private: int value; public: void SetValue(){ }};const Demo Obj; //常量对象2. 常量成员函数在类的成员函数说明后面可以加const关键字,则该成员函数成为常量成员函数。常量成员函数执行期间不应修改其所作用的对象。因此,在常量成员函数中不能修改原创 2020-06-27 11:45:59 · 466 阅读 · 0 评论 -
【C++学习笔记】 3-6 友元
目录1. 友元函数2. 友元类1. 友元函数一个类的有元函数可以访问该类的私有成员class CCar; //提前声明CCar类,以便后面CDriver类使用class CDriveer{ public: void ModifyCar(CCar * pCar); //改装汽车};class CCar{ private: int price; friend int MostExpensiveCar(CCar cars[], int tatal); //声明友元 friend原创 2020-06-27 11:03:11 · 693 阅读 · 1 评论 -
【C++学习笔记】 3-7 this指针
目录1. C++程序到C程序的翻译2. this指针的作用3. this指针和静态成员函数1. C++程序到C程序的翻译this的作用就是指向成员函数所作用的对象。2. this指针的作用非静态成员函数中可以直接使用this来代表指向该函数作用的对象的指针。对比:3. this指针和静态成员函数静态成员函数中不能使用this指针;因为静态成员函数并不具体作用于某个对象;因此,静态成员函数的真实的参数的个数,就是程序中写出的参数个数。站在巨人的肩上【1】北京大学原创 2020-06-27 10:37:01 · 198 阅读 · 1 评论 -
【C++学习笔记】 3-4 静态成员变量和静态成员函数
目录1. 基本概念1. 基本概念静态成员:在说明前面加了static关键字的成员。示例:class CRectangle{ private: int w, h; static int nTotalArea; //静态成员变量 static int nTotalNumber; public: CRectangle(int w_, int h_); ~CRectangle(); static void PrintTotal(); //静态成员函数};普通成员变量每原创 2020-06-23 21:00:42 · 241 阅读 · 1 评论 -
【C++学习笔记】 3-3 析构函数
目录1. 析构函数2. 析构函数和数组3. 析构函数和运算符delete1. 析构函数示例:class String{ private: char *P; public: String(){ p = new char[10]; } ~ String();};String :: ~String(){ delete[] p;}2. 析构函数和数组3. 析构函数和运算符delete站在巨人的肩上【1】北京大学信息技术学院《程序设计实习》.原创 2020-06-23 19:48:55 · 207 阅读 · 1 评论 -
【C++学习笔记】 3-2 类型转换构造函数
目录1. 类型转换构造函数1.1 目的1.2 特点1.3 编译器自动调用2. 实例1. 类型转换构造函数1.1 目的实现类型的自动转换1.2 特点只有一个参数不是复制构造函数1.3 编译器自动调用编译系统会自动调用 -> 转换构造函数建立一个 临时对象 / 临时变量2. 实例class Complex{ public: double real, imag; Complex(int i){//类型转换构造函数 cout<<"IntCo原创 2020-06-22 21:22:12 · 242 阅读 · 0 评论 -
【C++学习笔记】 3-1 复制构造函数
目录1. 基本概念2. 复制构造函数起作用的三种情况1. 基本概念只有一个参数,即对同类对象的引用形如==X :: X(X&) 或 X :: X(const X &)==,二者选一后者能以常量对象作为参数如果没有定义复制构造函数,那么编译器生成默认复制构造函数。默认的复制构造函数完成复制功能。class Comlex{ pricate: double real, imag;};Complex c1;//调用缺省无参构造函数Complex c2(c1);//调用缺原创 2020-06-18 14:11:14 · 208 阅读 · 0 评论 -
[C++学习笔记] 2-2 面向对象语言的发展历程
1. 早期程序设计语言的历史原创 2020-06-17 23:47:04 · 235 阅读 · 0 评论 -
[C++学习笔记] 2-1 面向对象程序设计方法
1. 结构化程序设计的思考1.1 结构化程序设计复杂的大问题 -> 层层分解/模块化 -> 若干子问题自顶向下,逐步求精1.2 结构化程序设计的程序模式结构化程序设计的问题:不得不面对的四大囧境1.理解难随着程序规模的递增,调用关系很难理解;2.修改难结构化程序无封装的概念,想要修改其中某个变量定义的时候,就需要修改所有对该变量的调用的语句;3.查错难当某个数据结构的值不正确的时候,由于程序错综复杂,所以很难找出是哪个函数出错的;4.重用难抽取重用部分代码原创 2020-06-17 23:37:49 · 377 阅读 · 0 评论 -
【知识点】C语言结构体初始化的一种方法
目录1. C语言结构体常规初始化2. 新get到的方法1. C语言结构体常规初始化typedef struct time{ uint8 hour; uint8 minute; uint8 second;}TIME_STR;main(){ time start_time; //设置初始时间为:13:14:22 start_time.hour = 13u; start_time.minute = 14u; start_time.second = 22u;原创 2020-05-22 09:35:44 · 216 阅读 · 0 评论 -
[C++学习笔记] 2-5 内联成员函数与重载成员函数
目录1. 内联成员函数2. 成员函数的重载及参数缺省1. 内联成员函数inline + 成员函数整个函数体出现在类定义内部class B{ inline void func1(); void func2() { };};void B::func1(){}2. 成员函数的重载及参数缺省重载成员函数成员函数–带缺省参数#include <iostream>using namespace std;class L原创 2020-06-17 14:01:33 · 189 阅读 · 0 评论 -
【C++学习笔记】 2-6 构造函数
基本概念成员函数的一种名字与类名相同,可以有参数,不能有返回值(void也不行);作用是对对象进行初始化,如给成员变量赋初值;如果定义类时没写构造函数,则编译器生成一个默认的无参数的构造函数(默认构造函数无参数,不做任何操作);如果定义了构造函数,则编译器不生成默认的无参数的构造函数;对象生成时构造函数自动被调用。对象一旦生成,就再也不能在其上执行构造函数;一个类可以有多个构造函数。为什么需要构造函数?. 构造函数执行必要的初始化工作,有了构造函数,就不必专门写初始化函数,也不用担心忘原创 2020-06-17 13:58:50 · 308 阅读 · 1 评论 -
[C++学习笔记]1-8 函数缺省参数
C++中,定义函数的时候可以让最右边的连续若干个参数有缺省值,那么调用函数的时候,若相应位置不写参数,参数就是缺省值。void func(int x1, int x2 = 2, int x3 = 3){ }func(10); //等效于func(10, 2, 3)func(10, 8); //等效于func(10, 8, 3)func(10, , 8); //不行,只能最右边的连续若干个...原创 2020-04-11 18:22:57 · 289 阅读 · 0 评论 -
[C++学习笔记]1-7 内联函数和重载函数
1 内联函数函数调用是有时间开销的。如果函数本身只有几条语句,执行非常快,而且函数被反复执行很多次,相比之下调用函数所产生的这个开销就会显得比较大。为了减小函数调用的开销,引入了内联函数机制。编译器处理对内联函数的调用语句时,是将整个函数的代码插入到调用语句处,而不会产生调用函数的语句。在函数定义前加“inline”关键字,即可定义内联函数inline int Max(int a, int...原创 2020-04-11 18:20:34 · 289 阅读 · 1 评论 -
[C++学习笔记]1-6 动态内存分配
用new运算符实现动态内存分配分配一个变量:P = new T;T是任意类型名,P是类型为T * 的指针。动态分配出一片大小为sizeof(T)字节的内存空间,并且将该内存空间的起始地址赋值给P。比如:int * pn;pn = new int;* pn = 5; 分配一个数组:P = new T[N];T:任意类型名P:类型为T * 的指针N:要分配的数组元素的个数,...原创 2020-04-11 18:18:04 · 295 阅读 · 0 评论 -
[C++学习笔记]1-5 “const”用法
1 定义常量const int MAX_VAL = 23;comst double Pi = 3.14;comst char *SCHOOL_NAME = "Peking University"; 多用const少用define,因为const有类型,便于类型检查。2 定义常量指针不可通过常量指针修改其指向的内容int n, m;const int *p = & n; ...原创 2020-04-11 18:15:04 · 185 阅读 · 0 评论 -
【C++学习笔记】1-4 “引用”的概念和应用
1 引用的概念下面的写法定义了一个引用,并将其初始化为引用某个变量。类型名 & 引用名 = 某变量名;int & r = n; // r引用了n,r的类型是int &某个变量的引用,等价于这个变量,相当于该变量的一个别名。int n = 7;int & r = n;r = 4;cout << r; //输出 4cout <<...原创 2020-04-11 18:12:16 · 219 阅读 · 1 评论 -
[C++学习笔记]1-3 位运算
1 基本概念位运算用于对整型类型(int, char, long等)变量中的某一位(bit),或者若干位进行操作。比如:判断某一位是否为1只改变其中某一位,而保持其他位都不变。2 按位与“&”通常用来将某变量中的某些位清0且同时保留其他位不变。也可以用来获取某变量中的某一位。3 按位或“|”按位或运算通常用来将某变量中的某些位置1且保留其他位不变。4 按位异或“^”...原创 2020-04-11 18:07:26 · 380 阅读 · 0 评论 -
[C++学习笔记]1-2 命令行参数
win+R1 命令行方式运行程序notepad sample.txtnotepad程序如何得知,用户在以命令行方式运行它的时候,后面跟着什么参数?2 命令行参数int main(int argc, char *argv[]){ ......}argc: 代表启动程序时,命令行参数的个数。C/C++语言规定,可执行程序本身的文件名,也算一个命令行参数,因此,argc的值至少...原创 2020-04-11 18:02:42 · 235 阅读 · 0 评论 -
[C++学习笔记]1-1 函数指针
1 基本概念程序运行期间,每个函数都会占用一段连续的内存空间。而函数名就是该函数所占内存区域的起始地址(也称为“入口地址”)。我们可以将函数的入口地址赋给一个指针变量,使该指针变量指向该函数。然后通过指针变量就可以调用这个函数。这种指向函数的指针变量称为“函数指针”。2 定义形式类型名(* 指针变量名)(参数类型1, 参数类型2,...);实例:uint8_t (* msg)(ui...原创 2020-04-11 17:57:47 · 204 阅读 · 0 评论 -
[C++学习笔记]2 类型转换构造函数
目的实现类型的自动转换特点只有一个参数不是复制构造函数实例编译系统会自动调用→转换构造函数建立一个临时对象 / 临时变量class Complex{ public: double real, imag; Complex(int i) //类型转换构造函数 { cout << "IntConstructor called" &...原创 2020-04-11 17:19:39 · 159 阅读 · 0 评论 -
[C++学习笔记]1 复制构造函数
1 基本概念只有一个参数,即对同类对象的引用形如 X::X( X& )或X::X( const X &),二者选一后者能以常量对象作为参数如果没有定义复制构造函数,那么编译器生成默认复制构造函数。默认的复制构造函数完成复制功能。classComplex{ private: double: double real, imag;};Complex c...原创 2020-04-11 15:57:27 · 205 阅读 · 0 评论