最近看的程序都用到了各种各样的const,觉得其实掌握const不难,关键是要弄清楚const修饰的是什么。
1.指针常量和常量指针
指针常量指的是此指针指向的地址是常量,也就是说不能再赋予这个指针新的值,const修饰的是指针;常量指针是指的指针指向的内容是常量,也就是说存储在这个地址的值是不能变的,const修饰的是指针指向的值。
指针常量的一般定义方式是type * const;
常量指针的一般定义方式是const type *;
如果某一个变量定义为const type * const, 这就表示这个常量指针指向的也是一个常量,也就是说,指针指向的地址和此地址指向的内容都不能变。
个人觉得,搞清楚指针常量和常量指针最关键的地方时弄清楚const修饰的是什么,究竟是什么东西不能变,这也是理解const的核心。
2.const跟变量的作用域和生存期都没有任何关系,加上const修饰的变量,与同样的没有加const修饰的变量,作用域和生存期是一样的。