2013年5月3日
摘要: const告诉编译器它所约束的对象是不允许被修改的,它可以作用于任何作用域类的对象(包括类对象),函数参数和返回值,及成员函数本体,使用它可以在编译时及时发现错误。1)const与指针const可以修饰指针本身,也可以修饰指针所指的对象,或者限制指针与其所指对象都为const,如下:const char* p = "hello";//non-const pointer, const datachar* const p = "hello"; //const pointer, non-const dataconst char* const p = " 阅读全文
posted @ 2013-05-03 20:53 Sophia-呵呵小猪 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 将C++中的string转换为char*的方法之一:1 char* Convert(string str)2 {3 const char* cs = str.c_str();4 char* pc = new char[strlen(cs)+1];5 strcpy(pc, cs);6 return pc;7 } 阅读全文
posted @ 2013-05-03 20:50 Sophia-呵呵小猪 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 首先说明gcc是用来编译和运行C文件,g++是用来编译和运行C++文件以编译和运行C++文件为例:如果在同一文件下有Head.h, Head.cpp, test.cpp,其中Head.cpp是Head.h的实现,test.cpp包含Head.h文件,那么编译和运行有如下两种方式:1)同时编译多个文件(顺序随意),并指定输出文件名g++ -o test Head.cpp test.cpp./test2)分别编译源文件,最后链接在一起运行:g++ -c Head.cppg++ -c test.cppg++ -o test Head.o test.o./testgcc类似,只需将上述的g++改为gc 阅读全文
posted @ 2013-05-03 19:36 Sophia-呵呵小猪 阅读(923) 评论(0) 推荐(0) 编辑
摘要: #define是预处理的内容,本质上是为一个常量或者一个函数定义一个标识符,而在编译时代码中的标识符会被其真正的内容所替换,主要目的可以理解为提高代码的可读性。但#define有其局限性,比如由于其是预处理器的内容,在编译时已经被真正的内容所替代,所以编译器很有可能看不到其标识符,那么在调试过程中就会出现迷惑,举个例子:对于下面的宏:#define PI 3.1415926编译时代码中不会出现PI,但会出现很多3.1415926,这样出现错误信息时,你就只能看到3.1415926,而看不到它的标识符,也就难以理解这个数值所代表的意义。而同时,出现很多的3.1415926也会占用较多的空间。这两 阅读全文
posted @ 2013-05-03 14:50 Sophia-呵呵小猪 阅读(384) 评论(0) 推荐(0) 编辑