const常量、指向常量的指针和常量指针
出处:www.examlink.com 作者:赤龙07 日期:2007年01月23日 15时51分
4)最后,是前面两者的结合:指向常量的常量指针
const int *const c=&e; //e是已经声明过的整型,整型常量或整型变量都可以
把它理解成一个普通的const常量,同时被剥夺了“靠解引用改变它指向的对象的值”的性质的就行。
5)关于记忆技巧:
对于区分const int *pa和int *const pa这两者,
前者中,const直接修饰*(不考虑int,因为类型在这里是没影响的),说明*(解引用)这种行为具有常量性,即“不能靠解引用改变它指向的对象的值”,即指向常量的指针。
后者中,const直接修饰pa,说明pa本身的值具有常量性,即常量指针。
或者也可以这样来记忆:
const int a; // const常量
const int *a; //指向常量的指针
int *const a=&n; //常量指针
你在纸上按顺序写下以上三行,记住它们的注释长度:短——长——短,
分别对应着:const常量、指向常量的指针、常量指针这三种,应该就不会混淆了。
个人认为以上记忆法比《Effective ++》条款21中推荐的划线分左右法更好记。
另1:也有教材反过来把上述第二者称呼为“常量指针”,第三者称呼为:“指针常量”,相对来说更容易让人混淆,大家还是只记住上面的那种称呼法就好。
另2:const和typedef在一起时容易让人陷入陷阱,具体见《typedef的用途和陷阱》。
最后更新时间:2008-03-28 12:10:09