代码改变世界

随笔档案-2011年5月19日

[收集] C++ memset ,memcpy 和strcpy 的区别

2011-05-19 17:50 by 彭白洋, 632 阅读, 收藏,
摘要: Memset用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘\0’;例:char a[100];memset(a, '\0', sizeof(a));memset可以方便的清空一个结构类型的变量或数组。如:struct sample_struct{ char csName[16]; int iSeq; int iType;};对于变量struct sample_strcut stTest;一般情况下,清空stTest的方法:stTest.csName[0]='\0';stTest.iSeq=0;stTest.iType=0;用m 阅读全文

[收集] C++ sizeof()和lstrlen()和strlen()区别

2011-05-19 17:28 by 彭白洋, 864 阅读, 收藏,
摘要: strlen()是返回字符串的字节长度,lstrlen()是返回字符串的字符长度。也就是说第二个函数可能和第一个函数结果一样,如果字符串中字符单位都是单字节的话。一般来说主要区别在于ascii的字符,还是unicode或者是utf的区别。ASCII编码是一个字符占一个字节,Unicode是一个字符占两个字节.求这两种字符串的长度,要用两个函数分别来.lstrlen(),strlen()用来操作字符串或字符数组,lstrlen(),strlen()是在程序运行后得到字符串长度sizeof()可以操作任何类行sizeof()由编译器计算得到lstrlen used for unicodestrle 阅读全文

[收集] C++ 指针与引用的区别

2011-05-19 16:18 by 彭白洋, 336 阅读, 收藏,
摘要: 此文章来自《More Effective C++ 》以前对指针和引用的区别没有清楚的认识,看了此文之后对指针和引用的区别有了更深刻的了解。特将此文保存下来,以便日后再读。指针与引用看上去完全不同(指针用操作符“*”和“->”,引用使用操作符“. ”),但是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。你如何决定在什么时候使用指针,在什么时候使用引用呢?首先,要认识到在任何情况下都不能使用指向空值的引用。一个引用必须总是指向某些对象。因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明为指针,因为这样你可以赋空值给该变量。相反 阅读全文

[收集] C++ const

2011-05-19 15:58 by 彭白洋, 337 阅读, 收藏,
摘要: 一 const基础如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况:int b = 500;const int* a = &b; [1]int const *a = &b; [2]int* const a = &b; [3]const int* const a = &b; [4]如果你能区分出上述四种情况,那么,恭喜你,你已经迈出了可喜的一步。不知道,也没关系,我们可以参考《Effective c++》Item21上的做法,如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于星号的右侧 阅读全文

[收集] C++ template 使用介绍

2011-05-19 10:32 by 彭白洋, 405 阅读, 收藏,
摘要: 1.模板的概念。我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重载(Overload)版本。//函数1.int max(int x,int y);{return(x>y)?x:y ;}//函数2.float max( float x,float y){return (x>y)? x:y ;}//函数3.double max(double x,double y){return (c>y)? x:y ;}但如果在主函 阅读全文

[收集] __declspec(dllexport) & __declspec(dllimport)

2011-05-19 09:28 by 彭白洋, 395 阅读, 收藏,
摘要: __declspec(dllexport)声明一个导出函数,是说这个函数要从本DLL导出。我要给别人用。一般用于dll中省掉在DEF文件中手工定义导出哪些函数的一个方法。当然,如果你的DLL里全是C++的类的话,你无法在DEF里指定导出的函数,只能用__declspec(dllexport)导出类__declspec(dllimport)声明一个导入函数,是说这个函数是从别的DLL导入。我要用。一般用于使用某个dll的exe中不使用 __declspec(dllimport) 也能正确编译代码,但使用 __declspec(dllimport) 使编译器可以生成更好的代码。编译器之所以能够生成 阅读全文