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 是一样的。

原文地址:https://www.cnblogs.com/HighFun/p/2738014.html