黑马程序员技术交流社区

标题: typedef和#define的区别? [打印本页]

作者: 小郑    时间: 2015-7-13 22:21
标题: typedef和#define的区别?
typedef  int  int2;
#define a 5
都是用一个替换掉另一个,还有什么别的区别吗?
作者: αメ炫    时间: 2015-7-15 00:28
#define mychar1 char *
typedef char * mychar2;

mychar1 a="aaa",b="bbb";
    mychar2 c="ccc",d="ddd";

    printf("%s\n",a);
    printf("%s\n",b);
    printf("%s\n",c);
    printf("%s\n",d);

这个打印b的时候会报错,老师讲过类似这个例子
宏定义只是简单代换, mychar1 a="aaa",b="bbb";替换之后是 char *a="aaa";b="bbb";
等价于 char *a="aaa"; char b="bbb";

而typedef确实是用一个类型声明了两个变量
mychar2 c="ccc",d="ddd"; 这个能正确等价为 char *c="ccc"; char *d="ddd";
作者: zlc    时间: 2015-7-15 09:55
我的理解是:typedef是给已经存在的类型取一个别名,typedef  int  int2  :  int2可以当作int类型来用;#define给变量指定一个值,#define a 5:在作用域内使用a就相当于使用5  
作者: 池莉娘子    时间: 2015-7-15 12:09
我感觉知道用法就行了
作者: 2899028818    时间: 2015-7-15 16:50
#define 是宏
作者: 562413895@qq.co    时间: 2015-7-16 07:55
当然是有区别的, #define只是简单的字符串替换,是在预处理完成的;而typedef是在编译时处理的,它是对类型说明符重新命名,被命名的标识符具有类型定义说明的功能。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2