C/C++
文章平均质量分 56
Flower195
这个作者很懒,什么都没留下…
展开
-
va_start: 在C语言种 通过指针来实现 函数的重载
va_start 1. 概述由于在C语言中没有函数重载,解决不定数目函数参数问题变得比较麻烦;即使采用C++,如果参数个数不能确定,也很难采用函数重载.对这种情况,有些人采用指针参数来解决问题.下面就c语言中处理不定参数数目的问题进行讨论.2. 定义大家先看几宏.在VC++6.0的include有一个stdarg.h头文件,有如下几个宏定义:转载 2013-12-15 16:43:21 · 943 阅读 · 0 评论 -
gcc 使用自己的库编译和连接
gcc -l参数和-L参数-l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢?就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名了 好了现在我们知道怎么得到库名,当我们自已要用到一个第三方提供的库名字libtest.so,那么我们只要把libtest转载 2014-02-27 16:12:59 · 1375 阅读 · 0 评论 -
c中 typedef函数的用法
#include typedef int (*FP_CALC)(int, int); //此处typedef定义的是一个函数指针类型 FP_CALC, 该函数指针指向的函数要返回值是int型, 两个参数也是int 。 FP_CALC f1; f1=add;是可以的呀。//注意这里不是函数声明而是函数定义,它是一个地址,你可以直接输出add看看 int add(转载 2014-02-18 11:35:56 · 1198 阅读 · 0 评论 -
ptr[-1]的作用和用法
今天在看APUE中4.7遍历目录程序的时候,发现一个语句 ptr[-1]=0; 这个用法很巧妙。ptr[-1]其实表示的是ptr指针当前指向的上一个元素。指针名可当作数组名来用,在用作数组时,实际上是读取数组名,也就是一个地址,加上一个偏移地址。这个偏移地址的计算是就是:下标的值*元素类型的大小。这样就可打到要取得数的位置,不会判断下标是否是负数。下面看一个例子:#incl原创 2014-02-18 20:33:03 · 1891 阅读 · 0 评论 -
ubuntu下安装c++11标准的编译器 gcc4.8的方法
ubuntu下安装c++11标准的编译器 gcc4.8的方法在网个搜了很多的文章都没有解决gcc 安装multilib时,遇到的问题。看到了一个英文网站的写的:安装竟然成功了。下面是步骤:原网址。Want GCC 4.8 with c++11 complete feature? Well here’s how to install it in Ubuntu 12.0转载 2014-03-15 19:59:51 · 2675 阅读 · 0 评论 -
C++两个类的头文件相互包含
C++中头文件相互包含的几点问题一、类嵌套的疑问C++头文件重复包含实在是一个令人头痛的问题,前一段时间在做一个简单的数据结构演示程序的时候,不只一次的遇到这种问题。假设我们有两个类A和B,分别定义在各自的有文件A.h和B.h中,但是在A中要用到B,B中也要用到A,但是这样的写法当然是错误的:class B;class A{ public:转载 2014-05-04 10:49:23 · 3581 阅读 · 0 评论 -
c++中对const关键字的理解
一、使用const定义普通常量 此时const可以悠然int, float, double等基本数据类型和string,vector。 此时定义的常量的值在程序中是不能改变的。 如: const int ia= 5; const double pi=3.14;原创 2014-03-23 22:49:00 · 823 阅读 · 0 评论 -
快速排序中交换两个数时,不使用辅助变量的bug. 陷阱
在进行交换两个数据的时候,我们可以多种上方法实现。一般的是使用一个额外的辅助变量来做交换,其它是利用数学运算符来作交换了。下面是几个实现数据的交换的函数。第一类,使用辅助变量来完成交换void swap1(int &a,int &b){ int temp=a; a=b; b=temp;}第二类,使用运算符来完成交换。void swap2(int &a,in原创 2014-03-23 21:55:17 · 752 阅读 · 0 评论