C|C++
poetliu
这个作者很懒,什么都没留下…
展开
-
通信数据格式解析
最近做的一点工作。基本原理是客户端与服务器一对一通信。客户端作为接收方解析数据,服务器端作为发送端,封包数据基本封包格式如下:通信格式说明101,1,6.8,3, 4494.99,0.264894,0.753365,0.798609,0.395870,0.612474,0.703561,2101起始位1设备正常工作与否 (0不正常 1正常)6原创 2016-04-08 13:09:07 · 1606 阅读 · 0 评论 -
vector迭代器失效的一种情形
使用过STL的人都应该知道关于迭代器失效的原理,这里以后vector迭代器失效为例:第一种:当插入一个元素到vector中,如果插入后容器已满,那么容器将新开辟一块内存区域,然后将原内存中的数据拷贝到新的内存区域,同时释放旧的内存。这样之前指向旧内存的迭代器就会指向不确定内存,这块内存要么释放,要么释放后又用作其他用途。这便导致了迭代器失效。第二种:当删除容器中一个元素后,该迭代器原创 2016-04-07 19:52:17 · 445 阅读 · 0 评论 -
STL源码剖析读书笔记之vector
STL源码剖析读书笔记之vector1.vector概述vector是一种序列式容器,我的理解是vector就像数组。但是数组有一个很大的问题就是当我们分配一个一定大小的数组的时候,起初也许我们不会觉得数组容量太小不合需求,但是随着数据量的增加,数组尺寸大小不再满足需求,此时我们需要手动的去扩展其大小。然而vector就帮我们完全实现了一个可自适应增长的数组功能。那么这样看来vec原创 2016-04-07 19:50:15 · 579 阅读 · 0 评论 -
关于移位操作的一点说明
我们有下面的测试代码: 1 #include 2 using namespace std; 3 4 5 int main() 6 { 7 int num1=7; 8 cout"num1(7)"2)endl; 9 cout"num1(7)>>2: ">2)endl;10 int num2=-7;11 cout"num2(-原创 2016-04-07 19:48:58 · 630 阅读 · 0 评论 -
关于#ifndef,#define,#end的说明
#ifndef,#define,#end 是宏定义的一种---条件编译这样我直接举个例子好了:我定义两个相同的类A分别在single.h和singlenew.h single.h: 1 #include 2 using namespace std; 3 4 class A 5 { 6 public: 7 A() 8 { 9原创 2016-04-07 19:27:40 · 2496 阅读 · 0 评论 -
关于memcpy和memmove的一点说明
今天看到书上降到memcpy和memmove的区别才突然发现原来两者之间有如此区别,以前只知道这两个函数是实现同样的功能,没有接触到其不同。 memcpy和memmove在MSDN的定义如下: 从两者的声明来看的确没有区别,我们来看这样一个例子 当我们需要将char* src="abcde"这个字符串全部copy到dest中然原创 2016-04-07 20:33:34 · 372 阅读 · 0 评论 -
struct内存对齐
内存对齐其实是为了在程序运行的时候更快的查找内存而做的一种编译器优化。 我们先看这样一个例子: 1 #include 2 using namespace std; 3 4 struct vpoet 5 { 6 int a; //4 bytes 7 char b; //1 bytes 8 double c; // 8 b原创 2016-04-07 20:50:17 · 466 阅读 · 0 评论 -
C++空类的大小
先介绍一个问题,一个空类的大小是多少?我们不妨测试一下: 1 #include 2 using namespace std; 3 4 class vpoet 5 { 6 7 }; 8 9 int main()10 {11 cout"sizeof(vpoet)="sizeof(vpoet)endl;12 return 0;13 }原创 2016-04-07 20:51:12 · 445 阅读 · 0 评论 -
Lambda 表达式的示例-来源(MSDN)
本文演示如何在你的程序中使用 lambda 表达式。 有关 lambda 表达式的概述,请参阅 C++ 中的 Lambda 表达式。 有关 lambda 表达式结构的详细信息,请参阅 Lambda 表达式语法。本文内容声明 Lambda 表达式调用 Lambda 表达式嵌套 Lambda 表达式高阶 Lambda 函数在函数中使用 L原创 2016-04-08 13:07:22 · 2275 阅读 · 0 评论 -
C与C++中的const
同样,有下面一段代码: 1 #include 2 using namespace std; 3 4 int main() 5 { 6 const int i = 0; 7 int *j = (int *) &i; 8 *j = 1; 9 cout"i address = 0x"",""j address = 0x"endl;1原创 2016-04-08 12:56:24 · 460 阅读 · 0 评论 -
strcat函数的坑点
我们先看下面这样一段代码: 1 #include 2 #include 3 using namespace std; 4 5 int main() 6 { 7 char *p1= "123"; 8 char *p2= "ABC"; 9 char str[50]= "xyz";10 strcat(p1,p2);11 str原创 2016-04-08 12:55:03 · 771 阅读 · 0 评论 -
C++中构造函数初始化成员列表总结
1.只能在构造函数初始化列表初始化的成员变量的类型? a.const成员变量 b.引用类型的成员变量 c.static不能在初始化列表中进行初始化 d.类成员变量中有自定义类型的变量最好在初始化列表中进行初始化 2.初始化列表的顺序? 初始化列表的初始化顺序是依据类成员变量定义的顺序来决定的。 3原创 2016-04-08 12:50:25 · 481 阅读 · 0 评论 -
关于C++中覆盖,重载,隐藏的一点说明
C++覆盖 重载 隐藏是三个经常容易混淆的概念这里我们简单总结下:1.重载的条件(编译时多态) a.同一个类中 b.函数名相同,参数不同(返回值不能作为重载的条件) c.与函数是否为虚函数无关 2.覆盖的条件(运行时多态) a.不同的类中,往往是一个继承体系 b.基类该函数为虚函数 c.派生类函原创 2016-04-08 12:49:20 · 366 阅读 · 0 评论 -
C++默认构造函数的一点说明
大多数C++书籍都说在我们没有自己定义构造函数的时候,编译器会自动生成默认构造函数。其实这句话我一直也是深信不疑。但是最近看了一些资料让我有了一点新的认识。 其实我觉得大多数C++书籍之所以这样描述其实是玩了文字游戏的。如果说编译器自动产生的默认构造函数对于我们的类没有任何作用,也就是说在编译器默认生成的这个构造函数里根本没有任何实质性的代码工作,那么这种默认构造其实是可有可无的,原创 2016-04-08 12:38:43 · 514 阅读 · 0 评论 -
C++对象模型浅析
本文仅代表博主自己对C++内存对象模型的一点理解,如果文中有理解偏差和不准确的地方,希望各位大大提出,我好及时改正。本博文只对博主自己负责,不对任何人负责。 就如《深度探索C++对象模型》一书中介绍的C++的封装并没有给C++带来过多的开销。然而面向对象的编程方法却给广大的编程者提供了一种更为开阔的编程思路。 好,我们主要看看前面一句。开销是什么,这原创 2016-04-07 20:58:05 · 520 阅读 · 0 评论 -
C++静态成员函数不能调用非静态成员变量
其实我们从直观上可以很好的理解静态成员函数不能调用非静态成员变量这句话因为无论是静态成员函数还是静态成员变量,它们都是在类的范畴之类的,及在类的整个生存周期里始终只能存在一份。然而非静态成员变量和非静态成员函数是针对类的对象而言。然而从本质上来说类的静态成员函数的函数形参中没有默认的this指针,导致不能调用具体实例对象的成员。 下面我们来测试一下:先在静态成员函数中调用静原创 2016-04-07 20:53:52 · 1040 阅读 · 0 评论 -
程序的堆区和栈区
关于进程的内存的分配参考博文:http://blog.csdn.net/hongchangfirst/article/details/6917829 这里主要说说堆区和栈区的区别:1.堆区是程序里动态分配的内容,堆区的内存容量大,使用灵活,分别后要自行回收容易产生内存碎片。2.栈区主要是存储函数的局部变量,然后程序结束后操作系统自行回收但是栈区容量比较小。原创 2016-04-07 20:52:25 · 2956 阅读 · 0 评论 -
栈的C数组实现
栈的C数组实现,简单清晰.原创 2014-07-29 11:25:11 · 2488 阅读 · 2 评论 -
C指针
第一章 指针的概念 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的 类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让 我们分别说明。 先声明几个指针放着做例子: 例一: (1)int *ptr; (2)char *ptr; (3)int **ptr;转载 2014-07-10 15:01:24 · 1092 阅读 · 0 评论 -
数据结构--队列之C数组实现
数据结构中---队列的C数组实现.原创 2014-07-29 14:17:56 · 2569 阅读 · 2 评论 -
C语言运算符的优先级
C语言运算符总结原创 2014-07-07 14:39:19 · 630 阅读 · 0 评论 -
续上文----线性表之单链表(C实现)
本文使用链表实现线性表的在内存中的另一种不连续结构.附C示例代码原创 2014-07-27 12:35:31 · 1208 阅读 · 0 评论 -
(续)顺序表之单循环链表(C语言实现)
循环链表基本操作的C实现.原创 2014-07-27 16:51:18 · 2613 阅读 · 0 评论 -
(续)线性表之双向链表(C语言实现)
双向链表的基本操作实现.复习数据结构.有C示例.原创 2014-07-27 15:08:31 · 2397 阅读 · 0 评论 -
从txt中读入数据到数组中(fscanf)
C-sources:原创 2014-07-09 10:30:04 · 9466 阅读 · 1 评论 -
线性表之顺序表(C语言实现)
一篇介绍顺序表的好文.附有示例代码.原创 2014-07-25 18:27:29 · 5588 阅读 · 2 评论 -
数据结构---栈的链表实现
数据结构栈的基本操作的链表实现原创 2014-07-29 13:09:59 · 2569 阅读 · 0 评论 -
二叉树建立和遍历
二叉树的建立和遍历原创 2014-07-24 15:47:04 · 2110 阅读 · 0 评论 -
C与C++动态分配二维数组
C:C中使用函数malloc和free两个函数.原创 2014-07-02 22:04:22 · 546 阅读 · 0 评论 -
字符串翻转
比如将"vpoet" 变为“teopv”#include using namespace std;int main(){ char Before_Str[100]={0}; cout<<"******************************vpoet*********************************\n"; cout<<"Please inpu原创 2015-06-26 15:44:32 · 2657 阅读 · 0 评论 -
python编程练习
python练习之冒泡排序:python代码:#coding=utf-8if __name__=="__main__": arr=[3,2,1,7,11,4,5,8] print "Before_Sort:"+str(arr) lens=8 temp=0 for i in range(0,lens): j=i+1原创 2015-06-26 17:29:39 · 2872 阅读 · 0 评论 -
C++异常处理
概述今天听了项目组里的C++高手讲C++的异常,受益匪浅。果然,与高手一起才能学习到更多的东西。下面我就把这位高手介绍的C++异常处理分享给园子里的博友们。什么是异常呢?在编程语言里,按照出现错误的时机来区分,有编译期错误和运行期错误之分。编译期错误大家肯定很熟悉了,当我们build一个程序时,console里出现的那些error提示就是编译期错误。这些错误是在编译期就能被编译器检原创 2015-01-15 13:33:43 · 1849 阅读 · 0 评论 -
C读txt到二维数组
#include#include#define maxn 200void main(){ FILE *fp; int s[maxn][maxn]; int i,j; if((fp=fopen("d:\\temp\\test.txt","r"))==NULL) { printf(" can't open"); exit(0); } for原创 2014-12-18 17:39:52 · 1886 阅读 · 0 评论 -
CreateThread线程函数
之前在一篇 基于TCP套接字实现的简单Demo原创 2014-07-11 14:17:25 · 1489 阅读 · 0 评论 -
C链表之创建简单静态链表
简单的单链表创建原创 2014-07-22 19:49:54 · 3125 阅读 · 0 评论