const And pointer
概述
pointer (指针):用于指向存储某一数据类型变量的内存空间
const:赋予变量或者对象只读属性
现以int数据类型为例,const与pointer的组合有一下几种情况
- const int* p;
- int const* p;
- int* const p;
- const int* const p;
- int const* const p;
其中
情况1和情况2等价,表示一个指向整型常量的指针,不能修改整型常量的值 —— p is a pointer pointing to a const int(int const)情况3,表示一个常量指针,指向整型变量,即一旦指针指向某一个整型变量之后,不能指向其他任意一个整型变量 —— p is a const pointer pointing to a int
情况4和情况5等价,表示一个常量指针,指向整型常量,即同时拥有情况1/2和情况3的特点 —— p is a const pointer pointing to a const int(int const)
图示
情况1和情况2
情况3
情况4和情况5
测试代码
#include <iostream>
using namespace std;
void constAndPointer()
{
int data1 = 100;
int data2 = 400;
// const int* p | int const* p
const int* p1 = &data1;
int const* p2 = &data1;
//*p1 = 200; // error
//*p2 = 200; // error
// end -------------------------
// int* const p
int* const p3 = &data1;
cout << "original value : " << data1 << endl;
*p3 = 200;
cout << "after modifying : " << data1 << endl;
//p3 = &data2; // error
// end -------------------------
// const int* const p | int const * const p
const int* const p4 = &data1;
int const* const p5 = &data1;
//*p4 = 200; // error
//*p5 = 200; // error
//p4 = &data2; // error
//p5 = &data2; // error
}