C/C++零碎知识总结
1、八进制数
int a = 010;
八进制数以0开头,上面的a是9不是10;
2、define一个常数
#define A 123456UL
其中UL表示是一个非负的长整数,一般在16位系统中会这么做。
3、#define一个min函数
#define MIN(a,b) ((a)<(b)?(a):(b))
很多人忘记了最外面的括号
4、typedef和define的区别
typedef是编译的一部分,typedef是一个别名,因此具有类型检查的功能。
define是预编译的一部分,发生在编译之前,仅仅是进行简单的字符串的替换,没有类型检查的功能。另外define可以实现函数的功能,但是typedef不行。
在定义指针的时候,用define要注意
#define PCHAR char* typedef char* pchar; PCHAR a,b; pchar c,d;
这个时候a是指针,但是b就是一个char类型,同时c和d都是指针类型。
用宏的好处是更加的灵活,比如可以定义unsinged PCHAR a;是可以的,但是unsinged pchar a;是不对的。
5、有些旧的代码是这样写的,要在结构提之前加入struct。
struct aaa { }; struct aaa a;
为了避免麻烦,可以这样写;
typdef struct AAA { }aaa; aaa a;
这样就不用struct了,当然这种情况在现在的编译器中已经不存在了。
6、
const int a; int const b; const char* p1; char* const p2; const char* const p3;
a和b是一样的,p1是内容是常量,不能更改,p2是指针指向的地址是常量不能更改,p3都不能更改。注意char const * p 和const char *p 是一样的。