const多次被面试宝典描述为只读;
我想与其叫做只读就是根据他的保护作用来说的吧
const的使用需要注意的也就几种,在此可能仍然会有遗漏,因为这里并未涉及
函数中使用问题,而是都是定义变量相关
1 const int i;
这个与int const i;相同,然而简单的这样定义是错误的,原因是这样定义了
const变量需要初始化。所以这点切记。除非该变量是从另一处引用过来然后声
明,例如extern const int i;这样表明是变量的此处声明,如果写成extern
const int i = 0;反而会导致重新定义变量的错误。格外注意。
2 const int* pi;
这种定义可以从右边读,表示一个指向const修饰的int ,所以表示int是
const的,而这里定义的pi是一个指针,所以并不需要初始化。值得注意的是
虽然用const来定义,但这个指针仍然可以执行非const变量。所以如果我们打算
修改所指向的变量的值还是可以的。
3 int *const pi;
这种定义仍然从右边读,表示一个const指针to 整形,所以这个指针是
const类型,于是免不了麻烦我们将不得不将其初始化。与上面相似的是,这个指
针仍旧可以指向一个非const变量。
4 最**的情况是这种 typedef int* pi;
下面 pi const pI1;
和 const pi pI2;
这两种情况都可以这样理解,tyedef就是新定义了类型,所以对应的pi我们可
以与处理基本类型一样处理,例如 const char ch和 char const ch这两种写法
相同,而且都需要初始化,所以上面的两种写法的错误可见。
同时pi作为一个类型来讲,const修饰的是pi, 表示这个pi的性质是const的,
也就是这个指针是“只读的”,所以展开来就成了 int *const pI1;
于是豁然开朗~~~
[重要提醒]对本篇资料有疑问,请到论坛讨论,尽量使文章准确无误>>>
[版权声明]BSD爱好者乐园站内文章,如来源不是互联网,则均系原创或翻译之作,可随意转载,或以此为基础进行演译,但务必以链接形式注明原始出处和作者信息,否则属于侵权行为。另对本站转载他处文章,俱有说明,如有侵权请联系本人,本人将会在第一时间删除侵权文章。
TAG: const 总结
