C/C++
文章平均质量分 72
奋斗Andy
努力不一定成功,成功离不开努力!
展开
-
C/C++函数库
1. 分类函数: ctype.h int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9'),返回非0值,否则返回0int isascii(int ch) 若ch是字符(ASCII码中的0-127)返回非0值,否则返回0int iscntrl(int ch) 若ch是作废字符(0x7F)或普通控制字符(0x00-0x1F),返回非.转载 2022-01-25 16:05:13 · 432 阅读 · 0 评论 -
互联网协议入门
原文链接:互联网协议入门(一) - 阮一峰的网络日志我们每天使用互联网,你是否想过,它是如何实现的?全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗?互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol Suite)。它们对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了互联网的原理。下面就是我的学习笔记。因为这些协议实在太复杂、太..转载 2021-11-26 19:17:04 · 277 阅读 · 0 评论 -
视频和视频帧:视频和帧基础知识整理
写在前面从18年12月接手在基于x86平台的边缘计算设备上进行取流解码的工作至今,已有数月。笔者还记得当初对流媒体、视频、帧、图像等概念完全云里雾里,慢慢跟着项目一步步学习走过来,受益良多,以这篇文章励志作为后续继续学习的里程碑吧!本文将介绍的是:视频的基础知识。包括:视频协议和格式、视频流。 视频帧的基础知识。包括:YUV帧格式、常见的帧名词(帧率fps、分辨率、码率)、“奇怪”的帧名词(1080p和1080i)、视频编解码而衍生的帧名词(GOP、I\B\P帧)。修改记录2019年4月转载 2021-04-02 14:28:40 · 3197 阅读 · 0 评论 -
C++虚函数和纯虚函数理解
虚函数:函数中带有关键字virtual纯虚函数:纯虚函数是在基类中申明为虚函数,它在基类中没有定义, 但是要求任何派生类都需要定义自己的实现方法,在基类的实现纯虚函数的方法是在函数原型后添加=0(virtual void funtion1()=0)虚函数的重载函数然然为虚函数, 在派生类中重定义虚函数时必须完全和基类完全相同。虚函数必须为类的成员函数,不能为全局函数,也不能为静态函数。不能将友员函数说明为虚函数,但是虚函数可以是另一个类的友员。虚构函数可以是虚函数,但是构造函数不能为虚函数。一般.原创 2020-12-29 19:34:57 · 505 阅读 · 0 评论 -
C++拷贝构造和赋值构造理解
C++一般创建对象 拷贝或者赋值的方式有:构造函数、拷贝构造函数、赋值函数。1 构造函数构造函数时一种特殊的成员函数, 是创建一个类的对象时,他被调用来对类的数据成员进行初始化和分配内存。C++的空类,编译器会加入默认的成员函数:默认构造函数和拷贝构造函数析构函数赋值函数(赋值运算符)取值函数即使程序没定义任何成员, 编译器也会插入以上函数--->构造函数可以重载, 可以多个 可以带参数。 析构函数只有一个2 拷贝构造函数拷贝构造函数是C++独有的, 他是一种特殊的构造函数原创 2020-12-29 19:34:07 · 686 阅读 · 0 评论 -
C++封装继承多态理解
面向对象的三个基本特征: 封装 、继承 、多态简单概括三大特性作用: 封装是为了代码模块化和增加安全性 继承是为了重用和扩展现有的代码模块 多态是为了接口复用 封装: 保护数据成员,不让类以外的程序直接访问或者修改类的成员,只能通过其成员对应方法访问(即数据封装) 隐藏方法实现的具体细节,仅仅提供接口, 内容修改不影响外部调用(即方法封装) 继承: 三种继承方式:public、protected、private。 继承的...原创 2020-12-29 19:33:05 · 2988 阅读 · 0 评论 -
C++文件流
// Observer_Test.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>#include <string>using namespace std;/************************************************************************//* C++通过以下几个类支持文件的输入输出---> ofstream: 写操作,原创 2020-12-29 19:32:12 · 216 阅读 · 0 评论 -
C++引用以及引用和指针的区别
1. 什么是引用?引用就是某个变量的"别名"(alias),对引用的操作与对变量直接操作效果完全相同。申明一个引用的时候一定要初始化(故引用不会为空)。引用申明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能在把引用名作为其他变量的别名。声明一个引用,不是新定义了一个变量,它只表示该引用名时目标变量的一个别名,它本身不是一种数据类型,因此引用不占存储单元,系统也不会给引用分配存储单元。2. 不能建立数组的引用-->这句话的意思是我们不能建立一个数组元素是引用的数组,但是还是可..原创 2020-12-26 12:03:03 · 276 阅读 · 0 评论 -
C++中#(一个#号)和##(两个#号)的用法和作用
1 C++中#(一个#号)和##(两个#号)的用法和作用1 关于一个#号:在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作, 简单说就是对他所引用的宏变量通过替换后再其左右各加上一个双引用。例子:# define WARNIF(EXP) \do{ \ if (EXP) \ { \ fprintf(stderr, "warning:" #EXP "\n"); \ } \ }while(0) 在实际使用中会出现下...原创 2020-12-26 12:02:20 · 9271 阅读 · 0 评论 -
static和const和define关键字比较
一般内存主要分为: 代码区、 常量区、 静态区(全局区)、 堆区、 栈区 这几个区域大小端测试:数据在内存中存放,有大端模式和小端模式小端模式(little-endian):低位字节存放在低地址上,高位字节存放在高地址上大端模式(big-endian):低位字节存放在高地址上,高位字节存放在低地址上。网络字节序:TCP/IP各层协议将字节序定义为Big-Endian, 因此TCP/IP协议中使用的字节序通常称之为网络字节序static uint32_t m=0x87654321;char *p=原创 2020-12-26 12:01:02 · 336 阅读 · 0 评论 -
判断设备是否挂载
//判断设备是否挂载#include <stdlib.h>#include <string.h>#include <assert.h>#include <stdio.h>#define MOUNT_PATH "/proc/mounts"int check_dev_mount(const char* p_device_name){ assert(NULL != p_device_name); assert(0 < strl...原创 2020-12-26 11:59:55 · 936 阅读 · 0 评论 -
C 语言中获取文件长度(ftell函数)
C 语言中获取文件长度(ftell函数):原理:将文件偏移到文件尾,然后获取文件尾和文件头之间的字节长度即为文件长度int get_file_len(const char* p_path){ int f_len = 0; if (NULL == p_path) return f_len; FILE* pf = fopen(p_path, "rb"); if (NULL == pf) return ...原创 2020-12-26 11:58:18 · 4248 阅读 · 3 评论 -
C++多继承菱形问题和解决方案
多继承的二义性:问题产生:一个派生类有两个或以上的基类(A B)其中A和B中有相同的成员名称或接口名称, 当派生类想调用时产生二义性 (这里的二义性是指无法直接通过变量名进行读取),需要通过域(::)成员运算符进行区分 C.A::m_a = 10; C.B::m_a = 15;菱形继承问题问题产生:一个派生类有两个或以上的基类,这些基类中存在相同的基类即(B继承A C继承A D继承B和C) 当派生类想要直接调用A类中的方法时,...原创 2020-12-26 11:57:29 · 783 阅读 · 0 评论 -
把线程放到指定CPU中运行
前言当前计算机都是多核的,linux2.6提供了进程绑定cpu功能,将进程指定到某个core上执行,方便管理进程。linux提供了sysconf系统调用可以获取系统的cpu个数和可用的cpu个数。使用方法//目前在线的CPU数量int cpu_nums = sysconf(_SC_NPROCESSORS_ONLN) /// @brief 把线程放到指定CPU中运行/// @p...原创 2019-02-26 19:32:06 · 2668 阅读 · 0 评论 -
关于C++ const 的全面总结
C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助。Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。 一、Const作用 如下表所示:No.作用说明参考代码转载 2016-10-11 17:29:47 · 403 阅读 · 0 评论 -
C++静态库与动态库详解与使用
这次分享的宗旨是——让大家学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书《程序员的自我修养——链接、装载与库》。什么是库库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说库转载 2016-09-30 09:07:40 · 8669 阅读 · 0 评论 -
C与C++类型强制转换总结
一、C 风格(C-style)类型强制转换 方法比较简单,如下所示: TYPE1 A; TYPE2 B; A = (TYPE1)B; // 强制转换。二、C++风格(C++ style)类型强制转换 C++标准定义了四个新的转换符:'reinterpret_cast', 'static_cast', 'd转载 2016-09-29 17:38:23 · 800 阅读 · 0 评论 -
C++中重载、重写(覆盖)和隐藏的区别实例分析
本实例讲述了C++中重载、重写(覆盖)和隐藏的区别,对于C++面向对象程序设计来说是非常重要的概念。具体分析如下:(转载在:http://www.jb51.net/article/54225.htm)1.重载:重载从overload翻译过来,是指同一可访问区内被声明的几个具有不同参数列(参数的类型,个数,顺序不同)的同名函数,根据参数列表确定调用哪个函数,重载不关心函数返回类型。示转载 2017-01-04 10:51:37 · 430 阅读 · 0 评论 -
C++多态的实现及原理详细解析
C++的多态性用一句话概括就是:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。如果对象类型是派生类,就调用派生类的函数;如果对象类型是基类,就调用基类的函数1. 用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。2. 存在虚函数的类都有一个一维的虚函数表叫做虚表。类的对象有一个指向虚表开始的虚指针。虚转载 2017-01-04 11:11:39 · 445 阅读 · 0 评论 -
C++中引用传递与指针传递总结
从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一个变量)。在C++中,指针和引用经常用于函数的参数传递,然而,指针传递参数转载 2016-09-30 09:36:33 · 956 阅读 · 0 评论 -
标准C++中string类的用法总结
概述:相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用。但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯定的。也许有人会说,即使不用MFC框架,也可以想办法使用MFC中的API,具体的操作方法在本文最后给出操作方法。其实,可能很多人很可能会忽略掉标准C++中string类的使用。标准C++转载 2017-03-11 14:44:20 · 339 阅读 · 0 评论 -
转 C++ 标准库 vector list map使用方法
1.ListList将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢.list对象函数assign() 给list赋值 back() 返回最后一个元素 begin() 返回指向第一个元素的迭代器 clear() 删除所有元素 empty() 如果list是空的则返回true end() 返回末尾的迭代器转载 2017-03-11 15:06:19 · 2526 阅读 · 0 评论 -
C++ 虚函数表解析
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过转载 2017-07-06 21:46:29 · 403 阅读 · 0 评论 -
XMl与Json学习笔记小结
概述:在我们的项目中用到XMl和Json格式的数据或者文件作为数据保存的格式,于是学习了XMl和Json的语法,做个小笔记总结下。XML基本知识点一个简单的xml实例 Tove Jani Reminder Don't forget me this weekend!1 XML文档必须要有根元素 如下所示:......2 XMl声明原创 2017-10-12 22:15:08 · 489 阅读 · 0 评论 -
fopen函数失败原因分析以及分析原因的方法
概述:最近在分析一个偶现的问题,偶现概率特别低,问题还在分析中。把分析的知识做个总结,后面再继续补充。问题描述:代码在调用Lua的require函数时发生异常,通过查看require的源码跟踪,发现该函数的fopen函数返回打开文件失败的异常,下面就来总结下fopen打开文件出错可能有哪些原因,也许不全,欢迎补充。函数介绍:函数原型 FILE * fopen(con原创 2017-12-21 16:14:02 · 64596 阅读 · 15 评论 -
自定义内存检测原理及方案
在项目开发中,或多或少都会遇到一些内存泄露的问题,今天就来总结下检测内存泄露的原理及其方法1 将使用的系统的动态申请/释放内存的函数重新重载实现一遍,如new、delete、malloc、free等等2 创建一个链表来保存申请/释放信息.3 在需要动态申请内存时使用自己重载后的申请函数。申请函数中记录下申请的地址, 内存大小,然后和一些关键属性,如文件名、函数名、函数、行号等等组成一个列表...原创 2018-10-23 19:26:27 · 1247 阅读 · 0 评论