typedef 与 #define的区别以及 const的用法

const用来限定一个变量的值不能被改变,初学者在使用const修饰指针变量时常容易犯错,看两个例子

例子A:

char * const a = 'A';

a = 'B';

例子B:

const char * a = 'A';

a = 'B';

结论:例子A是正确的,B是错误的,说明const在*左边修饰指针变量锁指向的值,在右边修饰指针变量本身

typedef用来定义一个类型的别名,#define也是用来替换,他们都不创造任何新的东西 具体有什么不同看下面两个例子

程序A:

typedef char * pStr;

char string[4] = "abc";

const pStr p = string;

p++;

程序B:

#define pStr char*

char string[4] = "abc";

const pStr p = string;

p++;

第一个程序会出错,而第二个不会

总结:首先,#define 是预编译指令,在预编译阶段产生作用;typedef在编译阶段产生作用

其次,#define 只做替换,不进行类型检查;typedef会做类型检查

posted @ 2011-08-12 17:54  屁屁熊  阅读(376)  评论(0编辑  收藏  举报