随笔分类 -  C/C++

摘要:本程序采用简单的同步串行通信,分为几个阶段: 1、打开串口 2、配置串口 3、设置串口输入输出缓存区大小 4、设置串口读写超时(若不设置超时,读写时会等待读写函数返回) 5、发送字符串(每次发送前清空发送缓存区) 6、接收字符(每次接收前清空接收缓存区) 7、关闭串口 bmLightComm.h b 阅读全文
posted @ 2016-12-16 17:49 凯撒大猩猩 阅读(2241) 评论(0) 推荐(0)
摘要:快速排序不是一种稳定的排序算法 设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。 1)设置两个变量i、j,排序开始的时候:i=0,j=N-1; 2)以第一个数 阅读全文
posted @ 2016-11-03 14:39 凯撒大猩猩 阅读(402) 评论(0) 推荐(0)
摘要:文章转自:http://blog.csdn.net/grantxx/article/details/7577730 文章不错,通俗易懂,特此分享。 一个结构体变量定义完之后,其在内存中的存储并不等于其所包含元素的宽度之和。 例一: #include <iostream> using namespac 阅读全文
posted @ 2016-10-13 17:11 凯撒大猩猩 阅读(792) 评论(0) 推荐(0)
摘要:方法一:将这N个数的数组,通过简单的冒泡排序法,以递减的顺序将数组排序,然后返回第K个元素。 方法二:先把前K个元素拷贝到数组b,以递减的顺序对其排序,然后,将剩下的元素逐个与数组b比较, 如果小于数组b中的第K个元素则忽略,否则将新元素放到数组b中正确的位置上,同时将数组b中的一个 元素挤出数组。 阅读全文
posted @ 2016-10-12 14:41 凯撒大猩猩 阅读(3244) 评论(0) 推荐(1)
摘要:index为第二大的数在数组中的下标; 在写算法的过程中,验证发现如果去掉第21行~第28行, 当初始化max和second相等且为整个数组最大, 即a[0]和a[1]相等且为数组最大时, 求出的第二大的数值会出错。 由此发现,去掉上述几行后,max和second初始化为相等且数组最大时, 此算法的 阅读全文
posted @ 2016-10-09 16:29 凯撒大猩猩 阅读(413) 评论(0) 推荐(0)
摘要:x64环境下实现: 结果(单位:字节): 阅读全文
posted @ 2016-09-13 17:34 凯撒大猩猩 阅读(2514) 评论(0) 推荐(0)
摘要:虚拟继承是多重继承中特有的概念, 类D继承自类B1,B2,而类B1,B2都继承自类A, 当类A为非虚基类,即类B1,B2非虚继承类A时,继承关系如下图: A A ↓ ↓ B1 B2 ↘ D ↙ 代码如下: 因此,为了节省内存空间,可以将类A定义为虚基类,即类B1,B2虚继承类A,继承关系如下: A 阅读全文
posted @ 2016-09-10 15:15 凯撒大猩猩 阅读(1033) 评论(0) 推荐(0)
摘要:今天在做AVT相机驱动的时候,编译后出现这个问题,我在一个类中定义了一个静态成员变量,但是编译总是报错:“error LNK2005 static VimbaSystem...已经在...obj中定义”。 代码大致如下: cameraBase.h cameraBase.cpp cameraAvt.c 阅读全文
posted @ 2016-09-09 15:51 凯撒大猩猩 阅读(983) 评论(0) 推荐(0)
摘要:1、假设derived类继承自base类,那么derived与base是一种“is a”的关系,即derived类是base类,反之错误; 假设derived类虚继承自base类,那么derived与base是一种“has a”的关系,即derived类有一个指向base类的vptr。 2、virt 阅读全文
posted @ 2016-09-02 18:20 凯撒大猩猩 阅读(207) 评论(0) 推荐(0)
摘要:1、与函数的参数传递不同,c++特别声明,不论被捕捉的exception是以by value或者by reference方式传递,一个对象被抛出作为exception时,总是会发生复制,而且复制动作是以对象的静态类型为本。 2、catch(Widget &w) { ... throw; } 和 ca 阅读全文
posted @ 2016-09-02 18:00 凯撒大猩猩 阅读(164) 评论(0) 推荐(0)
摘要:1、c++保证删除null指针是安全的,所以析构函数不必在删除指针之前先检查它们是否真正指向某些东西 2、养成良好的习惯:c++不能直接delete野指针,所以一般指针被delete之后,最好立即赋值为NULL,以免再次delete时出现问题。(释放后置NULL,不能释放前置NULL,否则可能造成内 阅读全文
posted @ 2016-08-16 17:46 凯撒大猩猩 阅读(206) 评论(0) 推荐(0)
摘要:当你有一个变量,但你不能够确定用来指向某个对象,还是不指向任何对象时,应当使用pointer,因为reference必须总是代表某个对象,因此pointer可以设定为NULL,但是reference不能够设定为NULL。 但是, char *p = NULL; char &r = *p; 以上行为会 阅读全文
posted @ 2016-08-08 18:19 凯撒大猩猩 阅读(133) 评论(0) 推荐(0)
摘要:前几天发现别人写的函数里有这样的操作, 调用的时候有些情况会造成崩溃, 在我看来,当if(fp==NULL),就表示 fopen打开不成功,应该不要使用fclose 关闭文件,否则fclose(NULL)必然会导致 crash。 应当改成 阅读全文
posted @ 2016-08-08 17:29 凯撒大猩猩 阅读(347) 评论(0) 推荐(1)