C/C++编程
文章平均质量分 83
关于C/C++应用的记录
Acuity.
只要思想不滑坡,想法总比问题多。
展开
-
C++ RAII典型应用之lock_guard和unique_lock模板
RAII典型应用之lock_guard和unique_lock模板的使用。原创 2021-05-18 20:03:42 · 1037 阅读 · 4 评论 -
【代码质量】RAII在C++编程中的必要性
RAII(Resource Acquisition Is Initialization),中文可直译为资源获取即为初始化,是C++语言的一种管理资源、避免泄漏的方法标准。原创 2021-05-15 22:07:28 · 538 阅读 · 0 评论 -
【RTD】AD7793驱动程序
AD7793完整驱动程序,支持两线、三线、四线RTD。原创 2021-03-10 23:59:36 · 5016 阅读 · 7 评论 -
C++中的二阶构造函数
C++二阶构造够确保创建对象的完整性,避免半成品对象引入bug。原创 2021-01-27 00:18:39 · 589 阅读 · 0 评论 -
C/C++解析tar文件
tar文件是将多个文件打包,以512字节块存储,并在每个文件前增加一个文件头描述信息。通过tar文件的存储格式,使用C/C++解析tar文件。原创 2020-11-22 00:00:03 · 3781 阅读 · 0 评论 -
设计模式回顾——原型模式(C++)
原型模式(Prototype Pattern),是一种创建型设计模式,指的是以原型实例指定待创建对象的种类,并通过拷贝(克隆)原型对象来创建新的对象。原创 2020-11-11 18:14:13 · 785 阅读 · 0 评论 -
设计模式回顾——观察者模式(C++)
观察者模式(Observer Pattern),指的是定义一种“一对多”的依赖关系,使得多个观察者对象同时监听某一主题对象,在主题对象的状态发生变化时,通知所有依赖该对象的观察者。原创 2020-10-29 17:49:11 · 892 阅读 · 0 评论 -
设计模式回顾——模板模式(C++)
模板模式(Template Pattern),指的是定义一个抽象(算法)模板结构父类,具体实现方法由子类实现。模板模式是行为型设计模式中使用较为广泛的设计模式。原创 2020-10-24 18:22:53 · 2219 阅读 · 1 评论 -
设计模式回顾——策略模式(C++)
策略模式(Strategy Pattern),指的是定义一系列算法,并将这些算法封装到具有公共接口的一系列策略类中,使得它们可以动态自由切换。原创 2020-10-17 00:31:39 · 534 阅读 · 0 评论 -
设计模式回顾——适配器模式(C++)
适配器(Adapter )模式, 就是将一个类的接口转换成客户期望的另外一个接口,使得原本由于接口不兼容导致不能一起工作的类可以一起工作。原创 2020-10-14 15:38:19 · 3303 阅读 · 7 评论 -
设计模式回顾——建造者模式(C++)
建造者模式是将一个复杂化对象的构造过程与其产品对象本身解耦,使得同样的构建过程可以创建不同的产品。原创 2020-09-30 17:27:46 · 495 阅读 · 0 评论 -
设计模式回顾——工厂模式(C++)
工厂模式,指的是封装对象的创建过程,并将创建过程和操作过程分离,提高程序的可维护性和扩展性。工厂模式又分为,简单工厂、工厂方法 、抽象工厂 。原创 2020-09-28 23:56:57 · 2000 阅读 · 1 评论 -
设计模式回顾——单例模式(C++)
单例模式,指的是一个类只有一个实例对象,类只提供一个访问实例对象的全局访接口。原创 2020-09-27 23:52:32 · 810 阅读 · 0 评论 -
【代码质量】C/C++代码静态分析与常用分析软件工具
程序静态分析(Program static analysis)是指在不执行代码情况下, 通过词法分析、语法分析、语义分析、控制流、数据流分析等技术对源代码进行扫描。原创 2020-09-16 23:46:56 · 12519 阅读 · 2 评论 -
C/C++log日志库比较
事实上,在C的世界里面没有特别好的日志函数库(就像JAVA里面的的log4j,或者C++的log4cxx)。C程序员都喜欢用自己的轮子。printf就是个挺好的轮子,但没办法通过配置改变日志的格式或者输出文件。syslog是个系统级别的轮子,不过速度慢,而且功能比较单调。转载 2020-06-18 00:24:09 · 2184 阅读 · 5 评论 -
【Linux应用编程】C++深拷贝和浅拷贝
1 拷贝构造函数 拷贝构造函数是一种特殊的构造函数,其功能是在创建新对象时,将已创建的同类对象赋值给新创建的对象。 拷贝构造函数一般应用在几个方面:调用同类型的对象初始化新创建的对象一个对象复制函数入口形参为类对象一个对象复制函数,返回值为类对象1.1 默认拷贝构造函数 如果类中没有显式定义拷贝构造函数,编译器会默认定义一个,即默认拷贝构造函数。1.2 拷贝构造函数...原创 2020-03-24 23:30:18 · 417 阅读 · 0 评论 -
堆与栈的效率
1.背景在闲聊或者面试的时候总会抛出到堆和栈两者的问题,计算机基础知识,但如果理解不深入,则回答不全面。下面总结下堆栈的相关知识。2.堆与栈1)程序执行过程说的堆与栈,和数据结构中的堆栈是有区别的,堆栈值不同内存区域的一个描述,多线程中,线程的堆栈是可以单独设置大小。2)C(C++)中内存分配全局变量、静态变量:全局区(静态区)分配内存;局部变量、函数验压栈、递归:从栈上分配,系统管理,系统分配和...原创 2017-09-14 00:01:22 · 2665 阅读 · 0 评论 -
jsoncpp应用(Linux环境)
目前考虑需使用C++操作JSON串,避免重复造轮子,GitHub上有不少开源好使的C++ JSON库。如jsoncpp、frozen 、JSON++ 、JeayeSON、PicoJSON等等,经过对比分析,发现“jsoncpp”是一个应用比较广、开源、轻量级的json库,也不乏各类学习资料,参与维护者多,如果存在bug时也能及时发现。原创 2019-07-03 09:31:21 · 883 阅读 · 0 评论 -
C/C++编程常引用到的头文件
1.POSIX标准定义的头文件 POSIX表示可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX ),POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称,其正式称呼为IEEE 1003,而国际标准名称为ISO/IEC 9945。 ...原创 2018-06-05 20:20:12 · 1993 阅读 · 0 评论 -
C/C++笔试(二)(C库(4)——strcpy实现)
最近面试,笔试试题遇到关于strcpy函数的实现问题,整体实现思路不难,但涉及到一些细节问题,而面试官的主体意思应该也就是考察面试者对于细节处理问题。面试完毕,后面查阅网络上相关答案,发现自己还是考虑不周全,出现细节错误。 题目: 已知strcpy函数的原型是: char * strcpy(char * strDest,const char * strSr...原创 2018-06-04 00:29:00 · 739 阅读 · 0 评论 -
C/C++关于基本数据类型的使用
对于一门编程语言来说,在使用或者新接触时,我们首要了解的是其提供的数据类型,而C语言作为高级语言的基础,所以也是编程者必须掌握的语言。C语言提供的基本数据类型有:整型(int)、长整型(long)、短整型(short)、字符型(char)、单精度浮点型(float)、双精度浮点型(double),这些类型也是最常用的,不论是底层MCU程序还是上层应用开发。 在程序开发中,会遇到各种C...原创 2018-05-20 00:28:52 · 1403 阅读 · 0 评论 -
一个关于数组的算法
题目:数组array中有若干个范围为1——100的整数,统计相同数字出现的次数。 分析: 1.数组中都为整数,范围在1——100,即最多有100种情况,也就是最多有100个计数变量。 2.假如题目改为:求整数10出现的个数,那么则好理解并实现。int i,count = 0;for(i = 0;i < n;i++){ if(arry[i] = 10) ...原创 2018-04-28 00:43:58 · 683 阅读 · 0 评论 -
指针函数与函数指针
1.含义 1)指针函数指的是一个函数返回值为指针类型的函数,本质就是个函数。 2)函数指针指的是指向函数的指针变量,本质是一个指针变量。 2.声明和定义 1)指针函数声明 类型关键字 *函数名(参数列表) 例: int *fun(int a,int b); 2)函数指针声明 类型关键字 (*函数名)(参数列表) 例: int (*fun)(int a,int b);...原创 2018-04-16 23:26:12 · 2610 阅读 · 0 评论 -
字符串解析(C库(3)——strstr实现)
strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。 项目需用到有效字符串提取功能,即是strstr函数的功能。一开始的时候,并未联想到strstr函数,所以用C/C++实现了此功能,程序直接调用strstr函数也能正确实现。下面是实现过程。实现方法1:借助streln和mem...原创 2018-04-12 16:57:46 · 1138 阅读 · 0 评论 -
C++类模板 template <class T>
类模板与函数模板的定义和使用类似。有时,有两个或多个类,其功能是相同的,仅仅是数据类型不同,如下面语句声明了一个类:class Compare_int{public : Compare(int a,int b) { x=a; y=b; } int max( ) { return (x>y)?x:y; } int min( )转载 2017-11-21 15:00:20 · 640 阅读 · 0 评论 -
C++实现String类
最近面试的笔试题,连续两次遇到此题目,作个记录。 题目:用C++实现下面String类中4个函数。class String { public: String(const char *str = NULL);// 普通构造函数 String(const String &amp;other);// 拷贝构造函数 ~String(void);...原创 2018-03-12 18:59:53 · 641 阅读 · 0 评论 -
常用排序算法
数据排序开发中经常使用到的,而数据排除则需应用到排序算法,常用的排序算法不外乎就几类,不同的排序算法,其性能效率和应用范围都不同。对于一般小数量的排序,任选一排序算法即可。常用的排序算法有:冒泡排序、选择排序、插入排序、快速排序、堆排序、归并排序、希尔排序、基数排序排序 平均时间复杂度 最坏时间复杂度 最好时间复杂度 空间复杂度 稳定性 ...原创 2017-12-27 23:29:48 · 576 阅读 · 0 评论 -
C库(1)——strlen实现
strlen是用来计算字符串长度的一个函数,以“\0”为结束,返回的长度不包括“\0”。下面用C语言来模拟实现。实现方法1:数组 原理:以数组形式获取字符,并判断字符串结束符,数组下标即为字符串长度 优点:通俗易理解 源码:int con_strlen(const char *s){ int i = 0; while (s[i++] != '\0...原创 2018-02-28 11:44:09 · 525 阅读 · 0 评论 -
C库(2)——strnlen实现
strnlen是strlen函数的延伸,增加了字符长度大小的限制。C库中库函数比如sprintf、strcpy等,为增加“安全性”,后面都衍生了带“n”的库函数,如snprintf、strncpy,建议使用时,都使用带“n”的库函数,防止意外情况,避免不必要的“执行bug”。strnlen函数定义如下:size_t strnlen(const char *str, size_t max...原创 2018-02-28 23:25:20 · 1099 阅读 · 0 评论 -
【Linux 网络编程】TCP epoll聊天程序
实现目标【1】创建TCP服务器和客户端,实现简易聊天程序;【2】单一进程,通过I/O复用epoll函数实现;【3】客户端/服务器任一结束,结束连接和对方进程。epoll类函数 epoll与select/poll是有本质上区别的,是为了处理大批量文件描述符而作了改进的poll,相比select/poll能够显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。epoll特...原创 2019-08-27 00:16:42 · 1350 阅读 · 0 评论