const

Posted on 2018-07-08 19:26 码农的理想国 阅读() 评论() 编辑 收藏

一、指针是const

含义:表示一旦得到了某个变量的地址,不能再指向其他变量

示例:

  int *const q = &i;//q是const

  *q = 26;//OK

  q++;//ERROR

解释:q只能指向i,不能再指向其他,但是它指向的变量的值是可以改变的,也就是说,i和*p可以被赋予新的值

二、所指是const

含义:表示不能通过这个指针去修改那个所指的变量

示例:

  const int *p = &i;(*p是const)

  *p = 26;//ERROR!

  i = 26;//OK

  p = &j;//OK

解释:p,i不是const,i和p均可以改变,但是*p是const,也就是说不能通过p去修改i的值

如何区分:const是在“*”之前还是之后

     在之前:所指是const

     在之后:指针是const

例如:

  int i;

    const int *p1 = &i;

  int const *p2 = &i;

  int *const p3 = &i;

第一个和第二相同,均表示所指是const;第三个表示指针是const !

三、数组与const

 示例:

  const int a[ ] = {1,2,3,4,5};

  数组变量已经是const的指针,这里的const表明数组的每个单元都是const int ,也就是说a[0],a[1],a[2],a[3],a[4]的值均不可改变,所以必须通过初始化赋值;

由于把数组传入函数时传递是地址,所以那个函数内部是可以修改数组的值,为了保证数组不被函数破坏,可以设置参数为const。比如: int sum(const int a[ ],int length)

 

版权声明:本文为blank-xu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/blank-xu/p/9281005.html