A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小郑 中级黑马   /  2015-7-13 22:21  /  929 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

typedef  int  int2;
#define a 5
都是用一个替换掉另一个,还有什么别的区别吗?

5 个回复

倒序浏览
#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";
回复 使用道具 举报
我的理解是:typedef是给已经存在的类型取一个别名,typedef  int  int2  :  int2可以当作int类型来用;#define给变量指定一个值,#define a 5:在作用域内使用a就相当于使用5  
回复 使用道具 举报
我感觉知道用法就行了
回复 使用道具 举报
#define 是宏
回复 使用道具 举报
当然是有区别的, #define只是简单的字符串替换,是在预处理完成的;而typedef是在编译时处理的,它是对类型说明符重新命名,被命名的标识符具有类型定义说明的功能。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马