【答疑解惑】define和const区别

在c/c++程序中我们经常使用到它们,由于使用比较频繁,我们就来做一下对比它们各自的作用。从以下几个方面来说明

1、编译器处理方式不同

  define宏是在预处理阶段展开。

  const常量是编译运行阶段使用。

2、类型和安全检查不同

  define宏没有类型,不做任何类型检查,仅仅是展开。

  const常量有具体的类型,在编译阶段会执行类型检查。

3、存储方式不同

  define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。

  const常量会在内存中分配。

const 可以节省空间,提高执行效率,避免不必要的内存分配。

const 修饰函数的返回值、修饰类的成员函数(任何不需要修改数据成员的函数都应该使用const修饰)。

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-08-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏水击三千

浅谈JavaScript的字符串的replace方法

  JavaScript字符串提供了一个replace方法。replace方法可以接受两个参数:第一个参数可以使RegExp对象或者一个字符串,第二个参数可以是...

22210
来自专栏mathor

二分查找与二分答案(2)

1294
来自专栏程序生活

Java学习(二)Static关键字的理解

在讲Static之前,引入一个小题 ? 答案为“c” ? 运行结果 Cannot make a static reference to the non-stat...

3468
来自专栏desperate633

详解javascript中的即时函数,内部函数,能重写自身的函数即时函数内部函数返回函数的函数能重写自己的函数小结

在上篇谈到匿名函数和回调函数的基础上,我们接着介绍javascript中的即时函数,内部函数,返回函数的函数,能重写自身的函数等几种常见的函数类型及使用方法。只...

711
来自专栏程序员互动联盟

【答疑释惑】指针的奥妙

从一个指针的例子说起,head指向链表的头: 1.ptr=head; head=NULL; 2.ptr2=head; head=head->next; head...

3206
来自专栏技术之路

详解 常量指针和指针常量

说一下 常量指针和指针常量 的区别。 常量指针   指向常量的指针,也就是说指针指向的对象是常量,指向的常量不能修改。指针不是一个常量, 可以把指针指向别一个常...

1737
来自专栏C语言及其他语言

【编程经验】变量的存储类型

在 C 语言中,变量是对程序中数据所占内存空间的一种抽象定义,定义变量时,用户定义变量的名、 变量的类型,这些都是变量的操作属性。不仅可以通过变量名访问该变量,...

853
来自专栏木子昭的博客

<提升效率>Mysql函数(function)|存储过程(procedure)函数存储过程小结

function_procedure 函数 mysql内置的函数很好用,同样mysql也支持用户自定义函数 1.为避免和函数中的语句结束符;冲突,将语句结束...

3749
来自专栏Jackson0714

【问题与思考】1+"1"=?

2573
来自专栏思考的代码世界

Python基础学习01天

1910

扫码关注云+社区