设为首页 加入收藏

TOP

C++中const的简单用法
2019-09-14 00:53:34 】 浏览:102
Tags:const 简单 用法

一、符号常量的声明


    常量声明的语句的形式:  const +  数据类型说明符 + 常量名 =  常量值


                    数据类型说明符  + const + 常量名 =  常量值         


            注意:   符号常量在声明时一定要赋初值,且在程序中不能改变其值。           



                   const float PI = 3.14159;                   //下面则是错误的声明                   const float PI;                    PI = 3.14159;


二、const* 和 *const 的区分


    目前了解的形式


    例如: const int *p (int const *p)


        int *const p


        const int* const p


    1.const int *p (int const *p) 的意义


       二者表达的意思一致,即 *p  是个 const ,不能通过 *p 修改 p 的指向,所以也可以叫它为只读型指针


                        由于是将指向的数据视为常量,定义的时候可以不用初始化


 



1.   int a = 0;     


    const int* p;     


    p = &a;     


    *p = 2; //错误,不能通过*p 修改值   


   2.   int a = 0;      


       const int* p = &a;      


       a = 1;      


       cout<< *p << endl; //此时p指向的值可以改变,打印出来为 1    


   3.   int a= 0,b = 1;      


     const int* p = &a;      


      cout<< *p << endl; //*p 值为 0      


      p = &b;      


     cout << *p << endl; //*p 值为 1


 


    2. int* const p 的意义


      该定义将 p  视为一个const常量,所以定义时就要初始化,且p 指向的位置不能改变,所以也可以叫它指针常量


 


1.  int a = 0,b =1;
    int* const p = &a;
    p = &b;    //错误,p 的指向已不能改变
   



2.  int a = 0, b = 1;
    int* const p = &a;
    *p = b;
    cout << *p << endl; //*p 为 1


 


3.  int a = 0, b = 1;
    int*const p = &a;
    a = b;
    cout << *p << endl; //*p 为 1


 


(const int* p 与 int* const p 与 const int* const p 的区别)


  const int* p 表示把 p  指向的变量看成常量


  int* const p 表示把 p 自己定义为常量,所以定义时就要初始化


  const int* const p 表示 p、*p 都是常量,即 p 的指向不能改变,也不能通过 *p 改变 p 指向的值


  有个评论讲的很有意思,share一下:


看"effective c++"第三条讲到:
只需要判断const是在 * 的左边还是右边即可。
左边则是修饰被指物,即被指物是常量,不可以修改它的值;
右边则是修饰指针,即指针是常量,不可以修改它的指向;
在左右两边,则被指物和指针都是常量,都不可以修改。
int c = 3;
int a = 2;
int b = 1;
//const出现在*左边,则被指物是常量
const int * pi = &a;
*pi = b;//不正确 被指物是常量
pi = &c; //正确
 //const 出现在* 右边,则指针是常量
int * const p = &a;
p = &c;//不正确,指针是常量
*p = c;//正确
//const出现在*左右两边,则被指物和指针都是常量
const int * const ptr = &a;
ptr = &c;//不正确,指针是常量
*ptr = c;//不正确,被指物是常量


注意事项 !


1.如果有const int a = 0; 那么必须是 const int* 才能指向 a,像 int* p =&a; 是非法的


2.const int a =10;


  int* p =&a; // 错误,这是不能取地址的,否则有修改值的能力


以上为现阶段的学习记录,如有错误希望指正 :)


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇关于 Python迭代器和生成器 下一篇Python入门基础教程之Python内置..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目