没有合适的资源?快使用搜索试试~ 我知道了~
define与typedef数据类型表示的区别.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 171 浏览量
2023-10-17
22:39:30
上传
评论
收藏 54KB PDF 举报
温馨提示
试读
2页
define与typedef数据类型表示的区别.pdf
资源推荐
资源详情
资源评论
define 与 typedef 数据类型表示的区别
Daizh
为了简洁和书写方便,我们通常会对数据类型进行类型的表示或别名,通常
有两种方法可以实现,即 define 宏和 typedef。
例如: #define STU struct stu 在程序中可用 STU 作变量说明: STU body[5],
*p;
#define INTEGER int 在程序中即可用 INTEGER 作整型变量说明: INTEGER
a,b;
应注意用宏定义表示数据类型和用 typedef 定义数据说明符的区别。 宏定义只是
简单的字符串代换, 是在预处理完成的, 而 typedef 是在编译时处理的, 它不是
作简单的代换, 而是对类型说明符重新命名。 被命名的标识符具有类型定义说明
的功能。请看下面的例子:
#define PIN1 int*
typedef (int*) PIN2;
从形式上看这两者相似,但在实际使用中却不相同。下面用 PIN1, PIN2 说
明变量时就可以看出它们的区别: PIN1 a,b;在宏代换后变成 int *a,b;表示 a
是指向整型的指针变量,而 b 是整型变量。然而: PIN2 a,b;表示 a,b 都是指向
整型的指针变量。因为 PIN2 是一个类型说明符。由这个例子可见,宏定义虽然
也可表示数据类型, 但毕竟是作字符代换。在使用时要分外小心,以避出错。
1) #define 是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正
确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。例如:
#define PI 3.1415926
程序中的: area=PI*r*r 会替换为 3.1415926*r*r
如果你把 #define 语句中的数字 9 写成字母 g 预处理也照样带入。
2) typedef 是在编译时处理的。 它在自己的作用域内给一个已经存在的类型一个别名, 但是 You
cannot use the typedef specifier inside a function definition。
3) typedef int * int_ptr;
与
#define int_ptr int *
作用都是用 int_ptr 代表 int * ,但是二者不同,正如前面所说 , #define 在预处理 时进行简单的
替换,而 typedef 不是简单替换 ,而是采用如同定义变量的方法那样来声明一种类型。也就是
说 ;
//refer to (xzgyb(老达摩 ))
#define int_ptr int *
int_ptr a, b; //相当于 int * a, b; 只是简单的宏替换
资源评论
hhappy0123456789
- 粉丝: 59
- 资源: 5万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- docker&docker-compose离线安装包(centos)
- 滑动窗口是一种流量控制技术,用于在数据传输过程中进行拥塞控制和流量调节4.txt
- Nacos如何支持服务发现和注册-基于词频统计的分析.txt
- :基于java打造的深度学习框架,帮助你快速搭建神经网络,实现模型推理与训练,引擎支持自动求导,多线程与GPU运算
- 第九次作业(XY图,XY图显示,三维曲面,数字波形图)
- 微信小程序实战案例:打造高效便捷的在线书店.zip
- 1.0.5win(1)(1).exe
- ESP8266 WiFi模块入门教程:从连接到配置.zip
- 词频统计:从基础到实践的应用指南.zip
- 滑动窗口:深入理解与应用.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功