const 相关

1.常量指针与指针常量

常量指针是针对于普通指针而言,语义在于指向常量的指针;
定义:
<code>
const <type> *<_name>;
</code>
常量指针解引用无法对引用值进行改变,但是可以改变指针自己的值;
example:
<code>
int tmp = 0, tmp2 = 1;
const int p = &tmp;
p = &tmp2; // ok
p = 1;//error
</code>
指针常量语义指针本身为常量;解引用可以改变指向的值,但是不能改变指针本身的值:
<code><type>
const <_name>;
</code>
example:
<code>
int tmp = 0, tmp2 = 1;
int
const p = &tmp;
p = &tmp2; // error
*p = 1;//ok
</code>

typedef 与const

关于const有个地方特别容易出问题:
如下:
<code>
typedef int* int_p;
const int_p tmp;
</code>
这里的 tmp 到底是常量指针还是指针常量?一般的人会将typedef 直接替换那就理解为:const int_p tmp 与 const int* tmp相对应,其实这种理解是错的!!!
这里定义其实是一个指针常量;解释如下:
typedef的意义在于定义一个类型,也就是是int_p 并不是直接被int* 替换,const语义在于对于定义的类型为常量,所以这里语义上解释为指针常量,指针本身是常量。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.语言中变量的实质 要理解C指针,我认为一定要理解C中“变量”的存储实质, 所以我就从“变量”这个东西开始讲起吧...
    金巴多阅读 1,843评论 0 9
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,544评论 1 51
  • 题目类型 a.C++与C差异(1-18) 1.C和C++中struct有什么区别? C没有Protection行为...
    阿面a阅读 7,726评论 0 10
  • 含义: 表示常量不可以修改的变量 可以修饰参数,作为输入参数 修饰函数,防止意外的改动 修饰类的成员函数,不改变累...
    erbai阅读 322评论 0 2
  • 一滴晶莹的雨水跌落在微微泛黄的油纸伞上,我独自彳亍在去往我住处的小巷。雨绵绵地下着,被它烹得湿润的晚风穿堂而过...
    厌世者阅读 426评论 0 2