黑马程序员技术交流社区
标题:
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