献给面试学生 关键字const是什么意思 ESP(译者:Embedded Systems Programming) --Dan Saks概括了const的所有用法
转载自:点击打开链接
关键字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的所有用法相关推荐
- char* 赋值 const char* 释放_Effective C++读书笔记之条款3:尽可能使用const
点击上方蓝字关注我们 C++的const关键字会强制编译器实施保持某个值不变的约束,帮助你在编译期间就能发现错误,灵活使用const能提高代码质量还能避免不想被改变的值被修改.下面我将从const作用 ...
- mysql面试学生表_SQL笔试:Student学生表,Course 课程表,Sc选课表
Student学生表(学号,姓名.性别.年龄.组织部门),Course 课程表(编号,课程名称),Sc选课表(学号,课程编号,成绩) 写一个SQL语句,查询选修了计算机原理的学生学号和姓名 selec ...
- c语言中const对于define优点,为什么大多数C开发人员使用define而不是const?
这有一个非常可靠的原因:C中的const并不意味着一些常量. 这只是意味着一个variables是只读的. 在编译器需要一个常量的地方(例如非VLA数组的数组大小),使用constvariables( ...
- const int *p说明不能修改_随时随地学习C语言之6—const修饰的变量真的不能修改吗?...
学习C语言的时候我们都知道,const修饰词可以防止程序中被const修饰的变量遭到修改,但事实上真的是不能修改吗?我们先来看一段代码: 注意第5行的变量p被const修饰,在第8行对p变量进行了修改 ...
- eem二级c语言题库哪种比较好,c语言小知识,供初学者参考
1 用预处理指令 define 声明一个常数 用以表明 1 年中有多少秒 忽略闰年问题 define SECONDS PER YEAR 60 60 24 365 UL 2 写一个 标准 宏 MIN 这 ...
- (转)关键字const有什么含意?
关键字const有什么含意? (转载) 一听到被面试者说:"const意味着常数",我就知道我正在和一个业余者打交道.去年Dan Saks已经在他的文章里完全概括了const的所有 ...
- C语言再学习 -- 关键字const
const 关键字其实我们并不陌生,之前有讲过const修饰数组和指针.现在来详细介绍这个关键字. 参看:[C/C++和指针]著名的<const的思考> 一.const 介绍 1.cons ...
- 关键字const是什么含意?
我只要一听到被面试者说:"const意味着常数",我就知道我正在和一个业余者打交道.去年Dan Saks已经在他的文章里完全概括了const的所有用法,因此ESP(译者:Embed ...
- [转载]C++ 面试
原文地址:C++ 面试作者:老徐 1.new.delete.malloc.free关系 delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数.malloc与free是 ...
- C++面试宝典2011
1.new.delete.malloc.free关系 delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数.malloc与free是C++/C语言的标准库函数,new ...
最新文章
- 7-3 逆序的三位数(C语言)
- 熬10天夜,肝出了这个PDF版“软件安装手册”(附下载)
- MIME 类型(HttpContext.Response.ContentType)列表
- Android java判断字符串包含某个字符段(或替换)
- python模拟鼠标点击和键盘输入的操作_Python模拟鼠标点击及键盘输入(PyUserInput)...
- 寒假每日一题2022【week1 完结】
- 初探ArrayList之删除
- 小工具发布(2008-01-25更新,HTML、URL编解码工具)
- 计算机图形学研究与应用的最新进展,关于计算机图形学的发展及应用探究
- JAVA正则表达式4种常用功能 [转]
- 【汇编语言与计算机系统结构笔记01】x86/MIPS/ARM指令集概述与特性,一篇HPCA引发的思考(商业生态的决定性作用)
- LC3无重复最长字串
- ThreadLocal是什么?ThreadLocal的原理分析
- 不变子空间与线性变换的矩阵之间的关系
- ios设置中性黑体_iOS 使用自定义字体 - 苹方字体
- android浏览器实现收藏功能,Lua布局fusionapp 收藏功能与历史记录实现
- oracle创建索引指定用户,循序渐进学Oracle之索引、权限、角色
- 输入一个字符串转换成十进制整数
- 开个新栏目,起个恬淡的名字
- 嵌入式软件开发学习 工程师要掌握的基本技能