typedef 优于 #define
2015-09-09 17:41
246 查看
案例一: 通常讲,typedef要比#define要好,特别是在有指针的场合。请看例子: typedef char *pStr1; #define pStr2 char *; pStr1 s1, s2; pStr2 s3, s4; 在上述的变量定义中,s1、s2、s3都被定义为char *,而s4则定义成了char,不是我们所预期的指针变量,根本原因就在于#define只是简单的字符串替换而typedef则是为一个类型起新名字。 案例二: 下面的代码中编译器会报一个错误,你知道是哪个语句错了吗? typedef char * pStr; char string[4] = "abc"; const char *p1 = string; const pStr p2 = string; p1++; p2++; 是p2++出错了。这个问题再一次提醒我们:typedef和#define不同,它不是简单的文本替换。上述代码中const pStr p2并不等于const char * p2。const pStr p2和const long x本质上没有区别,都是对变量进行只读限制,只不过此处变量p2的数据类型是我们自己定义的而不是系统固有类型而已。因此,const pStr p2的含义是:限定数据类型为char *的变量p2为只读,因此p2++错误。
相关文章推荐
- Android一个完整的项目转成SDK提供给第三方嵌入
- IIRF简单应用
- Java代理的模拟
- 软工视频(二)——软件计划
- HTTP协议
- [Android]应用语言切换的三种方法
- Flask-在浏览器中直接显示文本文件中的内容
- java2
- 显示执行时间
- mysql常用函数
- Redis学习1之redis单节点的安装和使用
- 在没有域环境的情况下配置完整安装的SharePoint2010和2013
- 华为OJ2288-合唱队(最长递增子序列)
- nyoj 21 三个水杯 【bfs变形(好题)】
- Activity切换之overridePendingTransition初探
- red5 使用自带的直播程序案例延时问题处理
- C#日期格式化
- 返回顶部的3中方法(解决移动端使用zepto没有滑动的效果)
- 0909第一次作业
- svn系列之四svn基本操作——检出项目