博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面试笔记 | const与#define相比的优点
阅读量:3789 次
发布时间:2019-05-22

本文共 590 字,大约阅读时间需要 1 分钟。

1. 请说出const与#define相比有何优点?

区别

#define MAX 255const float MAX = 255;
(1)就起作用的阶段而言:
  • #define是在编译的预处理阶段起作用。
  • const是在编译、运行的时候起作用。
(2)就起作用的方式而言:
  • #define只是简单的字符串替换,没有类型检查
  • const有对应的数据类型,是要进行判断的,可以避免一些低级的错误。
(3)就存储方式而言:
  • #define只是进行展开,有多少地方使用,就替换多少次,它定义的宏常量在内存中有若干个备份
  • const定义的只读变量在程序运行过程中只有一份备份
(4)从代码调试的方便程度而言:
  • const常量可以进行调试的。
  • define是不能进行调试的,因为在预编译阶段就已经替换掉了。

优点

主要从节省空间、提高效率、避免错误等方面入手回答此题。
  • const修饰的只读变量具有特定的类型,而没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行简单的字符替换,没有类型安全检查,并且在字符替换中可能会产生意料不到的错误。
  • 有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。
  • 编译器通常不为普通const只读变量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的值,没有了存储与读内存的操作,使得它的效率也很高。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

转载地址:http://ykztn.baihongyu.com/

你可能感兴趣的文章
解决Maven中资源过滤问题
查看>>
Springboot中解决Ajax请求跨域问题
查看>>
Keras软件安装
查看>>
cuda安装
查看>>
Anaconda3换源配置
查看>>
Unsafe.putOrderedXXX系列方法详解(数组赋值的第二种方式)
查看>>
javase个人垃圾复习笔记05Java StringBuffer 和 StringBuilder 类
查看>>
牛客编程题(七)
查看>>
三种设计模式
查看>>
牛客编程题(八)
查看>>
牛客编程题(九)
查看>>
过滤流
查看>>
3.输入整型数组和排序标识,对其元素按照升序或降序进行排序
查看>>
13.找到字符串的最长无重复字符串字串
查看>>
java常用垃圾回收器G1和CMS有什么区别
查看>>
BIO、NIO,AIO的区别
查看>>
linux压缩与解压
查看>>
数据结构基础(一)
查看>>
Linux反弹shell姿势总结
查看>>
CVE-2018-2894 WebLogic远程上传漏洞复现
查看>>