typedef与#define宏区别
- 先让我们了解一下typedef的功能,typedef简单来说就是给类型取一个别名;
如 typedef int New 那么int就有一个别名叫New了,以后size就和int这个类型一共用法了。
但如果仅仅认为typedef是把第一个参数(类型名)等同于第二个参数就太单纯了,他还有更复杂化的用法:
typedef char LINE[81] 它真的含义是LINE代表了81个元素的字符数组;那么 LINE t 就等同于char t[81];
还可以举一个函数指针的例子,如下:
1 typedef int (*func_ptr)(int,int); //typedef行 2 3 int (*fp)(int,int); //原型行 4 func_ptr fp; //应用行,与原型行实现的功能完全一样
首先,“typedef行”和“原型行”相比较,前者仅仅多了一个typedef而已;就函数指针的例子而言,他们俩的根本区别在于func_ptr是类的别名,fp是这个类一个具体的变量。
其次,“应用行”和“原型行”编译结果是完全一样的。就函数指针而言,他们都是创建了一个类型为 int (*)(int,int)的函数指针fp。可是func_ptr fp 比 int (*fp)(int,int) 形式更
加简单,便于书写和理解。形势越复杂,typedef的优势越明显。
- typedef与#define宏区别
与typedef不同,#define只是单纯的替换,,替换发生在预编译的过程,此时可以吧#define的每个参数看成一堆字母,#define只是将一堆字母傻傻的用领一堆字母替换。
#define dpChar char * typedef char * tpChar; dpChar p1,p2; tpChar p3,p4;
这么里貌似#define和typedef想干的都是同一件事——用一个新的名字替换点 char *;首先要注意书写顺序上,两者还是有区别的,#define是将新定义的名词变量放在
第一个参 数,把已有的参数或者类型名放于后面第二个参数,其实这个也很好连向,以前定义数学符号π时常用 #define PI 3.14159 来进行声明。
我们再来看结果:dpChar是#define定义的,按照替换原则,替换结果为 char *p1,p2;等价于定义了char *p1;char p2;此时p1是char *类型,p2是char类型。
tpChar是typedef给char *取的别名,此时定义出的p3、p4类型都是char *。
转载于:https://www.cnblogs.com/Higgerw/p/9850135.html
typedef与#define宏区别相关推荐
- C++中typedef和define的区别
typedef和#define的用法与区别 一.typedef的用法 在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像: ...
- C语言-typedef与#define的区别
目录 1 typedef 1.1 将复杂的声明简单化 1.2 定义平台无关的类型 1.3 与struct的结合使用 1.4 typedef使用公式 2 typedef与#define的区别 2.1 执 ...
- C语言typedef与#define的区别
typedef和#define define 没有参加编译,在预处理的时候就被替换掉了. typedef参加编译和链接.typedef是重命名,可以为枚举结构体等等重新命名,提高代码整洁. 一.typ ...
- typedef和define的区别
typedef和define都能够对一个类型起新的别名,但这两者有一些不同之处:首先,typedef是在编译时完成的,define是在预处理时完成的:其次,先看比如进行如下定义: #define ch ...
- typedef和define具体的详细区别
1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错.例如: #define PI 3.141 ...
- typedef和#define的用法与区别
typedef和#define的用法与区别 一.typedef的用法 在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像: ...
- c语言中define变量类型,C语言中typedef和define有什么区别
typedef和define的区别有:define是预处理编辑器,可定义宏存在被替换的的可能性而typedef是由编辑器处理的,并且遵循范围规则,可用作定义类型别名 #define是一个C指令,它也是 ...
- c语言错误c4430,C 语言 typedef 与 #define 比较
Alvin typedef 与 #define 的区别 1. 执行时间不同 关键字 typedef 在编译阶段有效,由于是在编译阶段,因此 typedef 有类型检查的功能. #define 则是宏定 ...
- typedef和define一些问题
1. 四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如: char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针 ...
最新文章
- 程序员的杂想-不要只做一名程序员
- 表变量是什么_为什么要使用二级指针?
- Hyperledger Fabric 核心模块(7)Fabric-ca-client
- 一款WP小游戏代码分享
- C++调用python(C++)
- Android Studio环境搭建
- 关于ViewPager的适配器之——pagerAdapter加载缓存页面的机制
- 在银行存款被吞了,怎么能快速解决?
- 三菱socket通信实例_三菱自动化产品相关知识整理汇总
- CSS 属性篇(七):Display属性
- Knowing is not enough; we must apply. Willing is not enough; we must do.
- web服务器mysql日志分析
- 计算机版的微信的功能是什么,计算机上的微信有没有收藏功能?电脑端如何打开微信收藏?...
- 硕士毕业论文框架怎么搭建?
- 视频添加背景音乐ffmpeg(十八)
- h5加java棋牌_Html5斗地主棋牌架设Canvas实现斗地主游戏代码解析
- 三坟五典八索九丘四书五经
- MacBook Pro 13 A1502 更换电池
- 计算机网络这么多,开发怎么理解五层网络结构体系好?
- 【附源码】计算机毕业设计SSM小区住户信息管理系统