码迷,mamicode.com
首页 > 其他好文 > 详细

const int *a和int *const a的区别

时间:2016-12-08 23:33:12      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:赋值   不能   初始化   技术   没有   指针   作用   编译   bsp   

 关键问题点:const 属于修饰符 ,关键是看const 修饰的位置在那里
1、const int *a
  这里const 修饰的是int,而int定义的是一个整值
  因此*a 所指向的对象 值 不能通过 *a 来修改,但是 可以重新给 a 来赋值,使其指向不同的对象
  eg:
         const int *a = 0;
         const int b = 1;
         int c = 1;
         a = &b  /技术分享/  额外:注意不能通过a 来修改 b值
         a = &c  /技术分享/   额外:虽然c本身不是一个常量
         *a = 2  //error 为题就在这里,不能修改通过 *a 所指向的对象值,最后赋值得对象是c,因此不能通过*a 来修改c值。
2、int  *const a       
  这里const修饰的是 a ,a代表的是一个指针地址
  因此不能赋给a其他的地址值,但可以修改a指向的值
  这有点和cont int *a相反的意味,例子就不说了

3、至于int const *a 和 const int *a 的意义是相同的 他们两个的作用等价

补充:
  4、const int * const a 
    这个代表a所指向的对象的值以及它的地址本身都不能被改变
  5、 const int *const a
    a所指向的对象及对象的值均不可改变。
关于const的点滴补充:
  1、const 对象的地址只能赋值给指向const 对象的指针
  2、指向const 对象的指针可以 被赋 以 一个非const 对象的地址 
  3、指向const 得指针常被用作函数的形式参数,保证被传递给函数的实际对象在函数得实际对象在函数中不会被修改
  4、常量在定义后就不能被修改,所以它必须被初始化。未初始化的常量定义将导致编译错误(上面都是在说明const得问题,所以没有赋值,实际语句中要赋值的)

2016-12-0821:31:41

const int *a和int *const a的区别

标签:赋值   不能   初始化   技术   没有   指针   作用   编译   bsp   

原文地址:http://www.cnblogs.com/wecode/p/6146739.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!