#define和typedef的区别
来源:互联网 发布:python 文件读取 编辑:程序博客网 时间:2024/06/09 19:30
一,区别
1,typedef 关键字,从字面意思来看,类型定义,其实不然,他不是类型定义,而是给现有的类型起别名,理解成 typerename 更好。并不会增加新的数据类型,但可以使书写更方便
2,typedef 只对数据类型起作用,#define 还可以作用于数据。
3,#define 处理的信息发生预处理阶段。而 typedef 是 c 语言语句,发生在编译阶段。
4 预处理不是c语言语句,所以在使用时不应该加“;”,预处理命令是在预处理阶段完成,本质是替换操作,常用大写字母来表示
5 程序执行的步奏:预处理(在此阶段不会进行错误的检查),汇编,编译(在在此处函数只要定义就可以编译通过),链接(在此阶段函数需要有实现)
6取消宏定义 #undef MAx
二,案例
#define CHAR char *typedef char * CHARP ; //为char *起一个别名typedef int ARRY[10] ; //为int数组起别名int main(void){ CHAR pa,pb;//like char *pa,pb; CHARP pat,pbt;//like char* pat,*pbt; ARRY arr;//like int arr[10]; printf("pa=%d,pb=%d\n",sizeof(pa),sizeof(pb)); printf("pat=%d,pbt=%d\n",sizeof(pat),sizeof(pbt)); printf("arr=%d\n",sizeof(arr)); return 0;}
结果如下
如何在使用#define时适当的加上括号 也许就不一样了哦
#define CHAR (char *)typedef char * CHARP ; //为char *起一个别名typedef int ARRY[10] ; //为int数组起别名int main(void){ CHAR pa,pb;//like char *pa,pb; CHARP pat,pbt;//like char* pat,*pbt; ARRY arr;//like int arr[10]; printf("pa=%d,pb=%d\n",sizeof(pa),sizeof(pb)); printf("pat=%d,pbt=%d\n",sizeof(pat),sizeof(pbt)); printf("arr=%d\n",sizeof(arr)); return 0;}
结果:
因为CHAR pa,pb; 就类似于(char*)pa,pb这样不对的语法,#define在使用的时候只是进行代替而不进行变化,所以在使用时不应该进行变化要直接带进去然后再进去相对应的运算。
1 0
- typedef和define的区别
- typedef 和 define的区别
- define和typedef的区别
- #define和typedef的区别
- Typedef和define的区别
- #define和typedef的区别
- Typedef和define的区别
- #define和typedef的区别
- Typedef和#define的区别
- typedef 和 define的区别
- typedef和#define的区别
- define和typedef的区别
- typedef和#define的区别
- typedef和define的区别
- typedef和#define的区别
- typedef和#define的区别
- typedef和define 的区别
- typedef和define的区别
- ubuntu下tinyos环境的搭建(亲测)
- Python的冷技巧小技巧
- Docker 网络设计哲学
- Android中Canvas画图
- 华为oj 统计大写字母个数&&求最大连续bit数
- #define和typedef的区别
- zedboard学习记录
- 1455: 罗马游戏|左偏树
- 1024. Palindromic Number (25) 回文字符串
- 分享一套 python 试题
- linux下su和su-以及sudo的介绍
- vs2013编译 x264
- Python学习笔记-列表的条件过滤生成
- 第十五章编程练习(1)