1.#define和typedef的区别 (宏,关键字,预处理,编译,检查)
#define是C语言中定义的语法,是预处理指令,在预处理时进行简单而机械的字符串替换,不作正确性检查,只有在编译已被展开的源程序时才会发现可能的错误并报错。
typedef是关键字,在编译时处理,有类型检查功能。它在自己的作用域内给一个已经存在的类型一个别名,但不能在一个函数定义里面使用typedef。用typedef定义数组、指针、结构等类型会带来很大的方便,不仅使程序书写简单,也使意义明确,增强可读性。
注意#define和typedef定义指针的区别
#define myptr int* p
myptr a,b;//a是int * a, b是 int b
typedef int* myptr;
myptr a,b;//a是int * a, b是 int* b
补充:int *p,q 表示p是指针变量,q是int变量
typedef int (*funtion)() //表示函数指针,重新命名为funtion