C++
proing
嵌入式开发,uboot, kernel, filesystem,各种通信协议
QQ: 1965837689
展开
-
异或^实现数据加密
(3)自反性: A ^ B ^ B = A (由结合律可推: A ^ B ^ B = A ^ ( B ^ B ) = A ^ 0 = A)由运算规则可知,任何二进制数与零异或,都会等于其本身,即 A ^ 0 = A。(2)结合律: ( A ^ B ) ^ C = A ^ ( B ^ C )异或是一种二进制的位运算,符号以 XOR 或 ^ 表示。(1)交换律: A ^ B = B ^ A。相同为0,不同为1,即。1.3 加解密字符串。原创 2023-08-30 14:08:05 · 375 阅读 · 0 评论 -
C++ JSON 库 jsoncpp 新API的使用方法(CharReaderBuilder / StreamWriterBuilder)
C++ JSON 库 jsoncpp 新API的使用方法(CharReaderBuilder / StreamWriterBuilder)https://blog.csdn.net/shaosunrise/article/details/84680602转载 2020-01-13 19:42:55 · 1902 阅读 · 0 评论 -
Unspecified Number of Arguments
#include "stdafx.h" #include #include #include #include #include #include #include using namespace std; typedef enum {TRUE = 1,FALSE = 0}BOOL; BOOL LogInfo(const char *Path,const c原创 2008-10-29 10:38:00 · 238 阅读 · 0 评论 -
复习下二叉树
int getHeight(BiThrTree t){ if (t==NULL) return 0; else if(t->lchild==NULL && t->rchild==NULL) return 1; else return max(getHeight(t->lchild), getHeight(t->rchild))+1;}原创 2008-10-27 16:22:00 · 230 阅读 · 0 评论 -
关于友元
友元能够使得普通函数直接访问类的保护数据,避免了类成员函数的频繁调用,可以节约处理器开销,提高程序的效率,但矛盾的是,即使是最大限度的保护,同样也破坏了类的封装特性,这即是友元的缺点,在现在cpu速度越来越快的今天我们并不推荐使用它,但它作为c++一个必要的知识点,一个完整的组成部分,我们还是需要讨论一下的.class Internet { public: Interne转载 2008-10-28 17:26:00 · 247 阅读 · 0 评论 -
关于静态库
<p class="MsoNormal" align="left" style="text-align:left;mso-layout-grid-align:none;text-autospace:none"><span style="font-size:9.0pt;font-family:新宋体;mso-hansi-font-family:"Times New Roman";mso-fo原创 2008-10-29 15:34:00 · 297 阅读 · 0 评论 -
完全搞定C指针(二)
C语言所有复杂的指针声明,都是由各种声明嵌套构成的。如何解读复杂指针声明呢?右左法则是一个既著名又常用的方法。不过,右左法则其实并不是C标准里面的内容,它是从C标准的声明规定中归纳出来的方法。C标准的声明规则,是用来解决如何创建声明的,而右左法则是用来解决如何辩识一个声明的,两者可以说是相反的。右左法则的英文原文是这样说的:The right-left rule: Start reading th转载 2008-11-05 10:35:00 · 290 阅读 · 0 评论 -
完全搞定C指针(一)
一。指针的概念 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 先声明几个指针放着做例子: 例一: (1)int *ptr; (2)char *ptr; (3)int **ptr; (4)转载 2008-11-04 17:33:00 · 313 阅读 · 0 评论 -
关于opaque
<p style="margin-top:7.8pt;margin-right:0cm;margin-bottom:7.8pt;margin-left:0cm;mso-para-margin-top:.5gd;mso-para-margin-right:0cm;mso-para-margin-bottom:.5gd;mso-para-margin-left:0cm;line-height:转载 2008-12-08 12:18:00 · 1243 阅读 · 0 评论 -
vc6安装pclint
Windows下C/C++开发工具中,VC6使用较为普遍,因此这里先讲下VC6.0环境中集成pclint的步骤. 首先, 当然要下载软件,正版软件要200多$呢,买不起!所以只好网上找免费的拉。从ttp://www.61ic.com/down/othe/pclint.rar处可以下载到一个8.0版本的pclint. 1.将pclint.rar解压至c:\, 这样lint文件就位与c:\pcl转载 2013-07-19 13:45:33 · 554 阅读 · 0 评论 -
assert 还能这样用
void VectorNormalize(Vec* src, Vec* dst){ float length; assert(src!=0 && "VectorNormalize: src vector pointer is Null"); assert(dst!=0 && "VectorNormalize: dst vector pointer is Null"); ..............转载 2008-10-27 17:01:00 · 231 阅读 · 0 评论 -
约瑟夫环--使用STL链表
templateclass T>void joseph(listT>& a, listT>& b, int jumNum){ listT>::iterator iter=a.begin(); while(!a.empty()) { for(int i=0;ijumNum;i++) { iter++; if(i原创 2008-10-27 14:36:00 · 442 阅读 · 0 评论 -
Big-Endian and Little-Endian
字节排序含义Big-Endian一个Word中的高位的Byte放在内存中这个Word区域的低地址处。Little-Endian一个Word中的低位的Byte放在内存中这个Word区域的低地址处。一个例子:如果我们将0x01020304写入到以0x0000开始的内存中,则结果为 big-endian little-endian0x0000 0x01原创 2008-09-10 16:15:00 · 201 阅读 · 0 评论 -
inline 、const、define
为什么要使用宏呢?因为函数的调用,必须要将程序执行的顺序转移到函数所存放在内存中的某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种转移操作要求在转去执行前要保存现场并记忆执行的地址,转回后要恢复现场,并按原来保存地址继续执行。因此,函数调用要有一定的时间和空间方面的开销,于是将影响其效率。而宏只是在预处理的地方把代码展开,不需要额外的空间和时间方面的开销,所以调用一原创 2008-09-22 20:53:00 · 356 阅读 · 0 评论 -
About MSCVP90D.dill not found
vs2008在微软的网站上找到的,因为bug提交的太晚,SP1不修复,要等VC10再修复了。。百度谷歌都搜不到中文结果,帖出来。Same problem MSCVP90D.dill not found,went to "Project | Game Properties | Configuration Properties | C/C++ | Code Generation | Runtime L转载 2008-09-25 16:54:00 · 281 阅读 · 0 评论 -
delete free
newdeletemallocfreefree的确释放了对象的内存,但是不调用对象的析构函数,所以如果在对象中使用new分配的内存就会泄露delete不仅释放对象的内存,并且调用对象的析构函数在delete内部仍调用了free但是两者是不一样的。 1,malloc和free是函数,而new和delete是运算符。MSDN Library关于malloc和free函数定义void *malloc(原创 2008-09-27 19:41:00 · 324 阅读 · 0 评论 -
虚函数表
每个含有虚函数的类有一张虚函数表(vtbl),表中每一项指向一个虚函数的地址, 实现上是个函数指针的数组。 1、验证虚函数表的存在 class A { int f(int i); }; Sizeof(A) = 1;class A { int f(int i); virtual int add(int j); //几个virtual都是4 }; Sizeof转载 2008-10-05 15:23:00 · 312 阅读 · 0 评论 -
显式类型转换函数
显式类型转换函数 一、C 风格(C-style)强制转型如下:(T) expression // cast expression to be of type T 函数风格(Function-style)强制转型使用这样的语法:T(expression) // cast expression to be of type T 这两种形式之间没有本质上的不同,它纯粹就是一个把括号放在哪的原创 2008-10-04 19:42:00 · 431 阅读 · 0 评论 -
虚函数与构造函数、析构函数
1、构造函数能不能是虚函数: 1.1从存储空间角度虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造函数不能是虚函数。1.2从使用角度虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函原创 2008-10-05 21:33:00 · 1038 阅读 · 0 评论 -
Singleton
上周六笔试时,阿朗和QQ都涉及到了。找了个Singleton.这个并不是很完善,用于单线程应没有问题。class Singleton{public: static Singleton * Instance() { if( 0== _instance) { _instance = new原创 2008-10-27 16:43:00 · 214 阅读 · 0 评论