typedef与define都是为一个对象取别名。
区别:
-
原理不同:
[1]. define是C语言的预处理指令,作用在预处理阶段,不具有正确语法检查,仅仅是在预处理阶段字符串的替换。
[2].typedef是一个关键字,作用在编译阶段,具有类型检查 ,typedef是给一个已经存在的类型取别名;不能在函数内部使用typedef取别名。 -
作用场景不同
[1].typedef在给变量类型取别名时优于define。(对于指针的声明我们很愿意这么写 int* sam,即sam是整型指针类型,虽然 int *``sam也是相同的含义。)typedef int* int_p; int_p a,b,c;上面 a, b, c的类型都是整型指针类型。因为typedef是个int* 取别名,可以直接去声明该类型的变量。
#define int* int_po; int_po d,e,f;而d, e, f类型是不一样的,d是整型指针类型,e 和 f是整型。因为define在预处理阶段只是将int_po 替换成 int*。
[2]. typedef给已存在类型取别名后,通常为了去声明变量(简化复杂庸长的类型 );define可以给常量取别名。声明数组时,数组的下标只能是常量,如array[10];为了方便以后程序更好的维护,我们通常这么做:#define MAXLEN 1000 array[MAXLEN];总结不到位,谅解。
847

被折叠的 条评论
为什么被折叠?



