指针常量和常量指针
Posted 善良超锅锅
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了指针常量和常量指针相关的知识,希望对你有一定的参考价值。
概念
常量指针:指向常量的指针。指针本身为普通变量,可以被重新赋值。指针指向的变量为常量,不可重新赋值。
指针常量:一个为常量的指针。指针本身为常量,指针的指向不可变,但指针指向的变量可以赋值。声明形式
常量指针:int const *p1;或const int* p1; (const和int挨在一起)
指针常量:int* const p2; (const和p2挨在一起)实例
int a(1);
int b(2);
int const *p1 = &a; //常量指针,p1可以重新赋值,p1指向的a不可重新赋值
int* const p2 = &b; //指针常量,p2不可重新赋值,p2指向的b可以重新赋值
*p1 = 10; //错误,p1指向的变量不能被赋值
p1 = &b; //正确,p1可以被重新赋值
p2 = &a; //错误,p2不能被重新赋值
*p2 = 20; //正确,p2指向的变量可以被重新赋值
读法
这个读法能把变量声明方法、读法以及实际意义联系起来。具体规则如下:
看const和指针变量名与数据类型的距离,const挨谁近就对谁起作用,const挨谁近读谁。
把变量类型、*号、const、变量名都看成一个距离单位。比如 int const *p1,int离const距离为0,指针p1离const距离为1(隔了个*号),int离const近,所以读常量指针。
而int* const p2,指针p2离const比较近,所以读指针常量。
常量指针的另一声明形式为const int* p1,也适用这种读法。
开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系
以上是关于指针常量和常量指针的主要内容,如果未能解决你的问题,请参考以下文章