http://www.kuqin.com/language/20090322/41866.html typedef好文章
typedef int * pint ;
#define PINT int *
那么:
const pint p ;//p不可更改,但p指向的内容可更改
const PINT p ;//p可更改,但是p指向的内容不可更改。
为什么呢。不明白
谢谢二楼的帮我又COPY了一遍
#define 是宏命令,在编译前,由预处理器做替代,如同文本编辑的替代命令,把程序中的所有遇到的词,全部替代。
#define PINT int*
就是把所有的词 PINT 替换成 int * ,替换完毕再编译。
typedef int* pint; 是语句,由编译器在编译过程中编译处理。
int* x; 和
pint x; 的声明是等价的
typedef int* pint;
long int* x; 声明是可以的,但
long pint x; 不可以。
#define PINT int*
long int* x; 声明是可以的,
long PINT x; 也是可以的。
从上两种情况对比,你就知道两者的区别
long,short,signed,unsigned 叫 “Modifiers”
const,volatile 叫 “Qualifiers"
const pint p; 锁定 pint 类型,锁定初始化后的指针地址。
const PINT p; 预处理为
const int * p; 锁定初始化后的指针指向的值。