#define 预处理指令,在编译预处理时进行简单的替换
typedef 在编译时处理,他在自己的作用域内给一个已经存在的类型的别名
typedef int * q与#define p int*
作用都是用q或p代替int*,但是正如前面所说,#define只是进行简单的替换,而typedef是采用如同定义变量的一种方法来声明一种类型
也就是说:
#define p int*
p a,b;
相当于int *a,b;(a为int l类型的指针,b为一个int类型的变量)
const p a; 相当于(const int*) a----------a的值可改,但是a指向的内容不可改
typedef int *q
q a,b;
相当于int *a,int*b(a,b都为指向int类型的变量)
const q a;相当于const int *a(==int *const a)------------a的值不可改,但a指向的内容可改