![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 78
alsace_008
有人说我不可能成为一个技术大牛,我要以事实证明他瞎了狗眼!
展开
-
嵌套模板的使用
Embed Templates(嵌入式模版)和Derive Templates(基模板) 每当你使用一个普通的类的时候,你也可以在其中使用一个STL类。它是可以被嵌入的: class CParam { string name; string unit; vector vecData; }; 或者将它作为一个基类: class CParam : public vector { string na原创 2014-06-06 13:01:15 · 806 阅读 · 0 评论 -
内存对齐的方法理解
#define SKB_DATA_ALIGN(X) (((X) + (WORDSIZE - 1)) & \ ~(WORDSIZE - 1))原创 2014-06-07 10:05:02 · 435 阅读 · 0 评论 -
使用gdb调试C程序
一、首先要在gcc中用 -g参数生成调试信息例: gcc -g test.c -o test;二、运行gdb并装入test: gdb test三、使用gdb中的list命令(可简写成l)列出源码清单:l并回车四、在gdb中如果不输入任何命令直接按回车则重复执行上次命令五、在某行设置断点,如在每12行设置断点:break 12六、在某个函数入口处设置断点,如在func函数入口处设置断点:break原创 2014-06-06 13:01:50 · 537 阅读 · 0 评论 -
C 编程获取正在运行的程序进程号
程序实现思想:Linux 系统的进程号是保存在 /proc 目录下的,一个在 linux 系统上运行的程序,只要是在运行状态下,就必然会在 /proc 目录下写入一批文件,其文件写入的方式如下:/proc//文件组这里面的文件组是指一批文件,不是指一个文件,大致的文件名信息如下:dr-xr-xr-x 2 work work 0 09-21 00:51 attr-r-------- 1原创 2014-06-06 13:01:57 · 1514 阅读 · 0 评论 -
格式化字符串说明,以printf为例,同样适用于scanf类组
printf()会根据参数format字符串来转换并格式化数据,然后将结果写出到标准输出设备,直到出现字符串结束('\0')为止。参数format字符串可包含下列三种字符类型1.一般文本,伴随直接输出。2.ASCII控制字符,如\t、\n等。3.格式转换字符。格式转换为一个百分比符号(%)及其后的格式字符所组成。一般而言,每个%符号在其后都必需有一printf()的参数与之相呼应(只有当%%转换字原创 2014-06-06 13:02:01 · 594 阅读 · 0 评论 -
extern作用详解
extern 作用1:声明外部变量现代编译器一般采用按文件编译的方式,因此在编译时,各个文件中定义的全局变量是互相透明的,也就是说,在编译时,全局变量的可见域限制在文件内部。例1:创建一个工程,里面含有A.cpp和B.cpp两个简单的C++源文件://A.cpp:int iRI;int main(){//.....}//B.cppint iRI;gcc A.cpp -cgcc B.cpp -c编译原创 2014-06-06 13:02:03 · 451 阅读 · 0 评论 -
REGEXP_LIKE,REGEXP_INSTR,REGEXP_SUBSTR,REGEXP_REPLACE 用法
ORACLE中的支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与INSTR的功能相似3,REGEXP_SUBSTR :与SUBSTR的功能相似4,REGEXP_REPLACE :与REPLACE的功能相似它们在用法上与Oracle SQL 函数LIKE、INSTR、SUBSTR 和REPLACE 用法相同,但是它们使用POSI原创 2014-06-06 13:02:05 · 795 阅读 · 0 评论 -
求解 segment fault 问题
#includemain(){ if(vfork() ==0) { printf(“This is the child process\n”); }else{ printf(“This is the parent process\n”); }}这段代码编译运行完,在最后报了一个segment fault 的错误,在最后加上exit(1)就没报原创 2014-06-06 13:01:48 · 520 阅读 · 0 评论 -
位移操作符,用法之一
比如说,x是一个int.您想要执行x/=2您要知道这是很慢的您可以直接x>>1这样就相当于x/=2了如果您想要除以2的n次方,那如果传统操作,效率就太低了,你首先要算出2的n次方,这很耗时间.用位运算:x>>n 搞定.这只是很小的一部分应用.又比如在N皇后问题中,直接搜索的效率异常低下,n>10的时候您就等您的程序结束可以等得哭了..这时也可以用位运算.C中没有逻辑数组(C++有),可实际上逻辑数原创 2014-06-06 13:01:46 · 863 阅读 · 1 评论 -
c++字符串大小写转换
c++字符串大小写转换 在C++中,由于没有单独定义string这个对象,所以字符串的操作比较麻烦些。字符串转换大小写是一个常用的功能,今天就简单总结下常用转换的方法:由于ANSI和Unicode在函数名上有差别,故都列出来,不过本人以Unicode为主。【1.用C语言标准库函数toupper,tolower】头文件:cctype c下面:ctype.h转大写Ansi版: int to原创 2014-06-06 13:01:43 · 818 阅读 · 0 评论 -
undefined reference to `__gxx_personality_v0'
错误:undefined reference to `__gxx_personality_v0' * 编译 c++ 程序需要添加 -lstdc++ sample: gcc -lstdc++ -o test test.c,否则会报 "undefinedreference to '__gxx_personality_v0' " 错误2. 唉,用gcc命令编译C程序,用g++命令编译C++原创 2014-06-06 13:01:41 · 501 阅读 · 0 评论 -
c中 ## 的用法
最近发现在C中有很多的东西值得我们学习。C中的#号不仅是#include,#define等的关键字首使用而已,#在宏中还有很多用法。具体请看下面我来举例1.双#号的宏用法。我相信双##号的用法应该大部分人都见过吧,主要是用来连接宏变量名使用,在GCC参考手册中这样记载。可用于宏内部将两个源代码权标连接成一个的连接指示字,可用来构造不会被解析器错误解释的名字。例如,下面两个宏会实现连原创 2014-06-06 13:01:39 · 542 阅读 · 0 评论 -
enum类型的作用
enum主要是用来定义常数,这样,在程序中可以用常数名称(如mon,tue...)来代替具体的值(1,2,...),使程序更具可读性。 用enum与直接用#define或者const定义常数相比,有两个优点: 1、enum中的值是依次递增的,不必为每个常数指定一个数字,在增加常数时很方便 2、enum是有类型安全的。用#define或const定义的常数,一般是用int等数字类型来存放,如原创 2014-06-06 13:01:37 · 1213 阅读 · 0 评论 -
虚函数、纯虚函数详解
虚函数:父类中有虚函数,如果子类实例以父类的身份出现,那么调用虚函数的时候就会是子类的实现,而不是父类的实现,如果是普通方法,那么将会调用父类的实现1.首先:强调一个概念 定义一个函数为虚函数,不代表函数为不被实现的函数。定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。 定义一个函数为纯虚函数,才代表函数没有被实现。定义他是为了实现一个接口,起到原创 2014-06-06 13:01:34 · 412 阅读 · 0 评论 -
指针的指针用法理解
指针的指针用法理解Case:需要在子函数中改变指针的指向,即需要用指针带回一个地址时;指针传递本质上是值传递的方式,它所传递的是一个地址值;因此如果改变被调函数中的指针地址,它将影响不到主调函数的相关变量。如果想通过指针参数传递来改变主调函数中的相关变量,那就得使用指向指针的指针,或者指针引用。例如#include //使用指针的指针的研究://Case1:原创 2015-03-11 10:16:08 · 485 阅读 · 1 评论