define、const、typedef的区别与联系

define 和const的联系与区别
(编译阶段、安全性、内存占用等)
联系:它们都是定义常量的一种方法。
区别:
• define定义的常量没有类型,只是进行了简单的替换,可能会有多个拷贝,占用的内存空间大;const定义的常量是有类型的,存放在静态存储区,只有一个拷贝,占用的内存空间小。
• define定义的常量是在预编译阶段进行替换,而const在编译阶段确定它的值。
• define不会进行类型安全检查,而const会进行类型安全检查,安全性更高。
• const可以定义函数而define不可以。

typedef 和 define 有什么区别

  1. 用法不同:typedef 用来定义一种数据类型的别名,增强程序的可读性。define 主要用来定义常量,以及书写复杂使用频繁的宏;
  2. 执行时间不同:define 是宏定义,是预编译的部分,其发生在编译之前,只是简单的进行字符串的替换,不进行类型的检查。typedef 是编译阶段的一部分,有类型检查的功能。( const 也是在编译阶段 )
  3. 作用域不同:typedef 有作用域限定。define 不受作用域约束(因为在预编译阶段已经进行),只要是在 define 声明后的引用都是正确的。
  4. 对指针的操作不同:typedef 和 define 定义的指针时有很大的区别。
    注意:typedef 定义是语句,因为句尾要加上分号。而 define 不是语句,千万不能在句尾加分号。
    #define INTPTR1 int*
    typedef int* INTPTR2;

在C++中const的用法(定义,用途)
const 用来定义一个只读的变量或对象。
主要优点:
便于类型检查、同宏定义一样可以方便地进行参数的修改和调整、节省空间,避免不必要的内存分配、可为函数重载提供参考。
说明:
const 修饰函数形参,是一种编程规范的要求,便于阅读,一看即知这个参数不能被改变,实现时不易出错。 const修饰成员函数不可修改成员变量。
• const修饰类的成员变量时,表示常量不能被修改,只读。
• const修饰类的成员函数,表示该函数不会修改类中的数据成员,不会调用其他非const的成员函数。

【注】const_cast: 用于去除const常量属性,使其可以修改 ,也就是说,原本定义为const的变量在定义后就不能进行修改的,但是使用const_cast操作之后,可以通过这个指针或变量进行修改; 另外还有volatile属性的转换。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值