本文内容:C++中const与指针的三种结合方式。
目录
一、const修饰符
二、const与指针
(1)const指针
(2)指向const对象的指针
(3)指向const对象的const指针
一、const修饰符
在C++中使用关键字const定义常量,const常量在定义时赋初值,以后只能使用而不能改变。const是一个左结合类型的修饰符。
二、const与指针
(1)const指针
int* const p = &m;(定义时必须初始化)
const位于*右侧,由于const是左结合修饰符,所以const修饰*(即const修饰指针),指针本身是常量。此时不能修改指针所指向的对象,但能修改指针指向对象的值。
//1. const指针
int b = 10;
int* const a = &b;
cout<<"修改b前:"<<*a<<endl;
b = 5;
cout<<"修改b后:"<<*a<<endl;
//输出结果
/*修改b前:10修改b后:5
*/
(2)指向const对象的指针
const int *p;或int const *p;
const位于*左侧,由于const是左结合修饰符,所以const修饰变量。此时不能修改指针指向对象的值,但能修改指针指向的对象。
//2. 指向const对象的指针
int m = 5;
int n = 10;
int const *p = &m;
cout<<"指针指向的对象未修改:"<<*p<<endl;
p = &n;
cout<<"指针指向的对象已修改:"<<*p<<endl;
//输出结果
/*指针指向的对象未修改:5指针指向的对象已修改:10
*/
(3)指向const对象的const指针
const int* const p = &q;或int const* const p = &q;(定义时必须初始化)
此时既不能修改指向指向的对象,也不能修改指针所指向对象的数值。