复合类型、函数与C++基础——const限定指针和引用

const限定指针

1:指向常量的指针

指向常量的指针不能够改变它所指向对象的值。

如果要存放一个常量的地址,就需要用指向常量的指针。

const int a=1024;
int *p=&a;
*p=100;
           //编译错误,*p无法修改a的值


const int x=1024;
const int *p=&x;      //用指向常量的指针存储x的地址
(int const *p=&x;)

2:指向非const对象的const指针

定义指向非 const对象的指针常量,该指针在内存中的值不允许改变,即该指针一旦用某个单元的地址值初始化,那么指针值就不能再改变,但它所指向单元的值可以改变。

int a=1024;
int *const p=&a;      //const限定p
*p=500;
int b=100;
p=&b;                 //p绑定的地址值固定,不能更改


//p是一个常量,它指向并且一定指向a,但是*p可以改变,因为它指向的是int

3:指向const对象的const指针

const int a=5;
const int *const p=&a;
               //p是一个指向const对象的const指针

第一个const限定int,表示指针指向的单元是常量;

第二个const限定p,表示指针也是一个常量;

因此指针所在内存值不允许改变,它所指向的内存值也不允许改变。

const限定引用

把引用绑定到 const对象上就像绑定到其他对象上一样,称为常量的引用4用不同的的是, const引用不能用来修改它所绑定的对象。

const int a=5;
const int &p=a;

 

const引用对所引用对象的类型要求也不同于普通引用。普通引用的类型必须与其所引用的对象的类型一致,但是, const 引用可以绑定到非 const对象,也可以用任意表达式初始化 const引用,只要表达式的结果能转换为引用的类型即可。

 const引用仅对引用自己可参与的操作进行了限定,对所指向的对象本身是不是常量未作限定。因为指向的对象也可能不是 const,所以允许通过其他途径改变它的值。

int a=10;
const int &p=a;
int &q=a;
p=6;          //错误,const限定,不能修改
q=3;          //可以通过q来修改a的值

 

 

 

 

你可能感兴趣的:(学习总结)