指针常量、常量指针、非常量引用与常量引用
一、指针常量与常量指针
(一)指针常量:
辅助记忆,“指针是常量”
int val1=2;
int* const p=&val1;// 定义一个指针常量,
理解一: 指针常量即“指针是常量”,const修饰的是指针p,指针不可改变,如下例:
#include<iostream>
using namespace std;
int main(){
int val1 = 2;
int val2 = 3;
int* const p = &val1;
p = &val2;
}
vs2017下编译错误:
注: 所谓左值非严格意义上来说可以理解为能取地址的表达式(例如 a+b就是非左值,是临时变量没有地址)
理解二: 指针虽然是常量但指针所指向的内容可修改,如下例:
#include<iostream>
using namespace std;
int main(){
int val1 = 2;
int val2 = 3;
int * const p = &val1;
cout << *p << "\n";
*p = val2;
cout << *p << "\n";
system("pause");//控制台暂停
}
vs2017运行结果: