转载自:点击打开链接

关键字const是什么含意?

答:我只要一听到被面试者说:“const意味着常数”,我就知道我正在和一个业余者打交道。去年Dan Saks已经在他的文章里完全概括了const的所有用法,因此ESP(译者:Embedded Systems Programming)的每一位读者应该非常熟悉const能做什么和不能做什么.如果你从没有读到那篇文章,只要能说出const意味着“只读”就可以了。尽管这个答案不是完全的答案,但我接受它作为一个正确的答案。(如果你想知道更详细的答案,仔细读一下Saks的文章吧。)如果应试者能正确回答这个问题,我将问他一个附加的问题:下面的声明都是什么意思?

const int a;

int const a;

const int *a;

int * const a;

int const * a const;

前两个的作用是一样,a是一个常整型数。第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。如果应试者能正确回答这些问题,那么他就给我留下了一个好印象。顺带提一句,也许你可能会问,即使不用关键字 const,也还是能很容易写出功能正确的程序,那么我为什么还要如此看重关键字const呢?我也如下的几下理由:

1). 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。)

2). 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。

3). 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现

另外添加Dan Saks概括了const的所有用法

图片转载自http://www.docin.com/p-12638841.html

献给面试学生 关键字const是什么意思 ESP(译者:Embedded Systems Programming) --Dan Saks概括了const的所有用法相关推荐

  1. char* 赋值 const char* 释放_Effective C++读书笔记之条款3:尽可能使用const

    点击上方蓝字关注我们 C++的const关键字会强制编译器实施保持某个值不变的约束,帮助你在编译期间就能发现错误,灵活使用const能提高代码质量还能避免不想被改变的值被修改.下面我将从const作用 ...

  2. mysql面试学生表_SQL笔试:Student学生表,Course 课程表,Sc选课表

    Student学生表(学号,姓名.性别.年龄.组织部门),Course 课程表(编号,课程名称),Sc选课表(学号,课程编号,成绩) 写一个SQL语句,查询选修了计算机原理的学生学号和姓名 selec ...

  3. c语言中const对于define优点,为什么大多数C开发人员使用define而不是const?

    这有一个非常可靠的原因:C中的const并不意味着一些常量. 这只是意味着一个variables是只读的. 在编译器需要一个常量的地方(例如非VLA数组的数组大小),使用constvariables( ...

  4. const int *p说明不能修改_随时随地学习C语言之6—const修饰的变量真的不能修改吗?...

    学习C语言的时候我们都知道,const修饰词可以防止程序中被const修饰的变量遭到修改,但事实上真的是不能修改吗?我们先来看一段代码: 注意第5行的变量p被const修饰,在第8行对p变量进行了修改 ...

  5. eem二级c语言题库哪种比较好,c语言小知识,供初学者参考

    1 用预处理指令 define 声明一个常数 用以表明 1 年中有多少秒 忽略闰年问题 define SECONDS PER YEAR 60 60 24 365 UL 2 写一个 标准 宏 MIN 这 ...

  6. (转)关键字const有什么含意?

    关键字const有什么含意? (转载) 一听到被面试者说:"const意味着常数",我就知道我正在和一个业余者打交道.去年Dan Saks已经在他的文章里完全概括了const的所有 ...

  7. C语言再学习 -- 关键字const

    const 关键字其实我们并不陌生,之前有讲过const修饰数组和指针.现在来详细介绍这个关键字. 参看:[C/C++和指针]著名的<const的思考> 一.const 介绍 1.cons ...

  8. 关键字const是什么含意?

    我只要一听到被面试者说:"const意味着常数",我就知道我正在和一个业余者打交道.去年Dan Saks已经在他的文章里完全概括了const的所有用法,因此ESP(译者:Embed ...

  9. [转载]C++ 面试

    原文地址:C++ 面试作者:老徐 1.new.delete.malloc.free关系 delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数.malloc与free是 ...

  10. C++面试宝典2011

    1.new.delete.malloc.free关系 delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数.malloc与free是C++/C语言的标准库函数,new ...

最新文章

  1. 7-3 逆序的三位数(C语言)
  2. 熬10天夜,肝出了这个PDF版“软件安装手册”(附下载)
  3. MIME 类型(HttpContext.Response.ContentType)列表
  4. Android java判断字符串包含某个字符段(或替换)
  5. python模拟鼠标点击和键盘输入的操作_Python模拟鼠标点击及键盘输入(PyUserInput)...
  6. 寒假每日一题2022【week1 完结】
  7. 初探ArrayList之删除
  8. 小工具发布(2008-01-25更新,HTML、URL编解码工具)
  9. 计算机图形学研究与应用的最新进展,关于计算机图形学的发展及应用探究
  10. JAVA正则表达式4种常用功能 [转]
  11. 【汇编语言与计算机系统结构笔记01】x86/MIPS/ARM指令集概述与特性,一篇HPCA引发的思考(商业生态的决定性作用)
  12. LC3无重复最长字串
  13. ThreadLocal是什么?ThreadLocal的原理分析
  14. 不变子空间与线性变换的矩阵之间的关系
  15. ios设置中性黑体_iOS 使用自定义字体 - 苹方字体
  16. android浏览器实现收藏功能,Lua布局fusionapp 收藏功能与历史记录实现
  17. oracle创建索引指定用户,循序渐进学Oracle之索引、权限、角色
  18. 输入一个字符串转换成十进制整数
  19. 开个新栏目,起个恬淡的名字
  20. 嵌入式软件开发学习 工程师要掌握的基本技能

热门文章

  1. 为什么学小易显示服务器开小差,学小易搜题APP
  2. css 白色背景如何实现半透明
  3. 软件设计大赛编程题《拼音字母》
  4. Flutter Animation 3D仿真书本翻页动画效果
  5. 局部敏感哈希-Locality Sensitivity Hashing
  6. 100%代码覆盖率的悲剧
  7. TiDB 的现在和未来
  8. python统计股票上涨天数
  9. 扫地机器人进水后会出现什么故障_小米扫地机器人吸进水怎么办?小米扫地机器人吸进水解决方法...
  10. 写计算机老师的一封信200,写给老师的一封信200个字