宏和const、typedef的区别
来源:互联网 发布:java 方法名拼写出来 编辑:程序博客网 时间:2024/06/05 05:36
1、宏和const区别
如果就单单定义常量说的话:1. const 定义的常数是变量 也带类型2. #define 定义的只是个常数 不带类型。
const定义的只读变量在程序运行过程中只有一份拷贝(因为它是全局的只读变量,存放在静态区),而#define定义的宏常量在内存中有若干个拷贝。#define宏是在预编译阶段进行替换,而const修饰的只读变量是在编译的时候确定其值。#define宏没有类型,而const修饰的只读变量具有特定的类型
总的来说:const:有数据类型,编译进行安全检查,可调试 define:宏,不考虑数据类型,没有安检,不能调试
2、宏和typedef的区别
typedef一般用到类型别名的定义中,宏也可以,不过宏是预编译的时候进行替换,而typedef不是简单的替换,它相当于是定义一种类型在编译时用。
使用的区别
#define Pointer1 int*
typedef int* Pointer2
如果定义变量 Pointer1 a;Pointer2 b。毫无疑问a、b都是int型的指针变量。
Pointer1 a1,b1;
Pointer2 a2,b2;
这一个定义,用Pointer1定义的话,是相当于int* a1,b1;只是定义了一个int指针a1和一个int变量b1;所以这样定义会出现错误;
但是用Pointer2 a2,b2;定义变量表示a2和b2都是指针类型的变量。
不过使用typedef也会出现一些莫名其妙的错误,比如说:int b3=5;const Pointer2 a3=&b3;
我们的目的是要定义a3所指向的内容不发生改变,但结果不是我们想要的,在上面的定义汇总const Pointer2 a3=&b3 与Pointer2 a3=&b3等价。
相当于是定义了一个a3的常量指针,而不是a3指向的一个常量内容。这也是使用tyepdef需要注意的地方。
当然typedef的真正目的不仅仅是这样用,这只是typedef的一个简单用法。
0 0
- 宏和const、typedef的区别
- #define 和 #typedef , const的区别
- const、#define、typedef和inline的区别
- #define,const,typedef的区别
- #define、const、typedef的区别
- #define、const、typedef的区别
- #define、const、typedef的区别!!!
- #define、const、typedef的区别
- const、define、typedef的区别
- typedef char * pStr的问题和const char*, char const*, char*const的区别
- typedef char * pStr的问题和const char*, char const*, char*const的区别
- C++中#define、typedef和const的区别
- #define,const,typedef三者联系与区别 及 static和const的解释
- define与const、inline、typedef的区别
- 请教define,const,typedef,inline的区别
- const和#define之间的区别,typedef和#define之间的区别
- 区别const、#define、typedef
- typedef和const之间的trap
- ios开发 网络编程浅析
- 阿里面试
- Graphics2D使用范例介绍
- Qt实现完全按键控制Ui的简单框架
- 博客搬迁
- 宏和const、typedef的区别
- 对全文检索引擎xapian的学习(二)---布尔检索和概率检索
- 手把手教你appium_ios第一个例子
- MVC中部分视图调用方法总结
- iOS7提供的API进行二维码扫描解码
- 一首不知道名字的歌
- 张三丰
- mongodb集群配置
- ReportStudio入门教程(二十九) - 使报表不能编辑