const 的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/YL970302/article/details/79673800

Const的用法

const有四个作用,下面我们分别介绍:

作用1:定义常变量 (常变量的值不会被改变)  const int a = 10;  在这样的定义中a 只能可读,不可写也就是说它的值是不能被改变的,可读就是它只能做右值不能做左值,右值就是指在赋值符号‘=’的右边,顾名思义左值就是在‘=’的左边了,接下来由具体的实例来说明:

   int main( )

{

   int a = 10;  // 可读可写

   int b = a;  // a做了右值

    a = 100;   //a做了左值,即a的值被重新写了一遍

   const int ca = 100;  // 只读不可写,只能做右值不能做左值,所以ca = 100 是错误的;

   b = ca; // 正确,ca做了右值

}

作用2:数据类型对于const是透明的,const int 等同于 int const

实例 : int const cc = 100;   //其实这一句就等同于 const int cc = 100;

作用3:const 直接修饰的内容不能做左值

实例:const int *cp1 = &a; 或 int const *cp1 = &a;

     cp1 = &b; //正确,其实是因为cp1存了a的地址,如果cp1= =&a就是错误的,但是 = &b就是对的,因为cp1此时没有存b的地址因为const直接修饰的是*cp1, 所以*cp1不能做左值,但是cp1可以做左值; cp1 = 20 //错误

     int *const cp3 = &a;

     cp3  = &b  //  错误,因为const 直接修饰了cp3;

     *cp3 = 100;  //正确,理由同上;

作用4:权限的传递(上课老师讲的图书管的例子)

 {

  int a = 10;   //  可读可写

  int b = 10;   //  可读可写

  int const ca = 100;  // 只可读

  int const cb = 200;  //只可读

  int *p = &a;      // 可读可写

  p = &ca;        //错误,因为p是指针,他会解引用         

  int const *cp1 = &a ;  

  cp1 = &ca;   //正确

  int *const cp2 = &a;

  cp2 = &a;  //错误

  int *const cp3 = &ca; //错误

  const char *p ;  // p是指针,可以解引用,所以如果它保存了某个变量的地址是,p是不可以做左值的

}

  char *Mystrcpy ( char *des, const char *src)

{

  //  *src = ‘\0’;    //在这个语句中,因形参那里的src已经被const修饰,所以数组src的值是不能被改变的,数组src只能做右值,不能做左值;

}

 

猜你喜欢

转载自blog.csdn.net/YL970302/article/details/79673800