
C/C++
文章平均质量分 54
coderlang
34+ 程序员,CTO,全栈工程师,搬砖 11 年,薪资翻20倍
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
sizeof和strlen测试
char a[] = "hello\0\0"; char *ptr = "hello"; printf("%d\n", sizeof(a)); //8 包括了’\0’ printf("%d\n",strlen(a)); //5 遇到第一个’\0’ printf("%d\n", sizeof(ptr)); //4 指针原创 2012-12-26 16:21:03 · 741 阅读 · 0 评论 -
C++练习之override操作
C++中override(覆盖)操作符是类封装中应用到最基本的操作,琢磨了下,才算是懂了点点,以下是自己的一些理解,如有不对之处,请指正,谢谢!源码下载地址:git clone https://[email protected]/laneyu/cplusplus.gitsample目录下既是本文所有例子测试代码一、operator+操作operator+操作主要有四种方式:原创 2014-02-11 17:38:28 · 1619 阅读 · 0 评论 -
消息队列的使用
linux消息队列就是类似于FIFO形式的,使用起来还是蛮方便的,可以应用于进程间传递消息,如,某个显示内容功能,就可以采用消息队列进行,以下是项目中应用到的消息队列,用于传递结构体。函数原型:ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long int msgtyp, int msgflg);int msgsnd原创 2013-11-14 18:39:38 · 1031 阅读 · 0 评论 -
柔性数组
前段时间在解析rtsp的时候感觉到了header+payload格式下,如果payload采用指针方式进行,即将header和payload分开,则在处理的时候颇为不便。今突然发现了柔性数组,感觉颇为好用,特记录如下具体什么是柔性数组,请参考参考资料#include struct test{ int a; double b; char p[]};int main()原创 2013-10-08 17:02:47 · 1226 阅读 · 0 评论 -
网络协议的封包与拆包方法
最近在处理rtsp拆包的时候,发现自己在网络协议方面存在着很大的问题,其中最大的问题就是不清楚如何根据协议进行解析?因此,在做网络协议的拆包的时候如果这些知识没有想清楚,理解透彻,那么在做起来的时候你会发现各种各样的错误让调试起来总是困难重重!因此,我们在解网络协议的时候,第一:清楚该协议格式;第二:熟悉该协议拆包流程; 如,rtp包协议格式如下?那么我们该如何解析呢?原创 2013-08-24 23:40:13 · 2907 阅读 · 0 评论 -
memmove的实现
上篇文章中,我们探讨了memcpy的缺陷,发现memcpy不能够实现后向拷贝,最后我们提出了其解决方案,本篇文章我们就来实现该方法,即memmove的实现第一眼看到memmove的时候,第一映像是,memmove是将源数据剪切到目的地址,然后将源数据进行清除了,其实memmove就是拷贝的意思,只是在memcpy的基础上,增加了一个后向拷贝数据,实现原理如下所示void *memmov原创 2013-05-02 14:59:15 · 1619 阅读 · 0 评论 -
strcpy的实现
在前面的文章中,我们详细介绍了memcpy函数的实现及其缺陷,本文我们主要介绍下strcpy函数的实现及其与memcpy函数的区别一样,通过google搜搜strcpy,我们可以得到以下一段话char * strcpy ( char* destination, const char * source );Copy stringCopies the C string poin原创 2013-05-02 15:27:14 · 1185 阅读 · 0 评论 -
memcpy缺陷探讨
前一篇文章描述了memcpy的实现方法,本文将探讨下memcpy运用中存在的缺陷,即memcpy不能拷贝目的地址(dest)和源地址(src)内存空间有重合的部分,更为确切的说应该是当目的地址大于源地址的时候,不能够有重合部分,否则源地址重合部分数据会发生错误以下分析只考虑目的地址和源地址有数据重合情况,在没有数据重合情况的时候,memcpy是能够正确的使用,不会出现错误1、当目的地址(d原创 2013-05-02 14:49:54 · 9786 阅读 · 0 评论 -
memcmp和strcmp函数的实现
阅读了前面几篇文章都知道mem系列函数和str系类函数两个主要区别是:mem系类函数不受数据类型限制,但需要指定字节数,而str系列函数指明操作字符串,并且需要null字符结束。如memcmp和strcmp函数的实现,如下所示int memcmp(const void *cs, const void *ct, unsigned long count){ const unsigned c原创 2013-05-02 15:38:37 · 1276 阅读 · 0 评论 -
memcpy的实现
我们平时经常用memcpy以及strcpy等等库函数,都知道用法,但是知道他们的区别吗?因此,从本文开始,将会探究一下他们的内部实现以及之间的区别。google一下memcpy我们可以在http://www.cplusplus.com/reference/cstring/memcpy/找到关于memcpy的介绍,如下所示memcpyvoid * memcpy ( v原创 2013-05-02 10:40:14 · 2868 阅读 · 0 评论 -
C语言回调函数
回调函数时一个程序员不能显示调用的函数;通过将回调函数的地址传给调用者从而实现调用。回调函数使用是非常必要的,如ucos-ii的软件定时功能,在我们想通过一个统一接口实现不同的内容,这时用回调函数非常适合。比如,我们为几个不同的设备分别写了不同的显示函数:void TVshow(); void ComputerShow(); voidNoteBookShow()...等 等。这时我们想用一个统一的原创 2013-03-17 20:03:45 · 986 阅读 · 0 评论 -
代码效率测试方法
代码效率测试可以通过获取CPU频率以及始终滴答数进行测试,源码如下所示void running(int seconds){ Sleep(seconds*1000);}void GetCPUInfo(void){ LARGE_INTEGER start, end; LARGE_INTEGER freq; double TimeSpent = 0; //花费的时间 if (原创 2013-03-10 15:43:56 · 1703 阅读 · 0 评论 -
sprintf和snprintf测试
1、 SprintfChar pszInfoBuf[50];Sprint(pszInfoBuf, “***File:%sLine%d***”,__FILE__, __LINE__); //__FILE__过长,pszInfoBuf装不下程序异常。输出数组越界2、 Snprintf/_snprintf(将整型数据转换为字符型数据)在VC,VS下原创 2012-12-26 16:22:56 · 893 阅读 · 0 评论 -
C++练习之template操作
C++模板(template)在应用中也是很广泛,我理解的模板就是该类或者该函数可以塞入不同的数据类型,而能正确处理。源码下载地址:git clone https://[email protected]/laneyu/cplusplus.gittemplate目录下有本文章的完整例子一、类模板(class templates)1、简单使用类模板允许类里面的函数、变量等等使原创 2014-02-12 17:48:25 · 1190 阅读 · 0 评论