近水楼台先得月,离谁近就修饰谁——Const
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable:4996)
#include <iostream>
using namespace std;
int main(int argc, char* argv[]) {
//关于** 指针常量** 和** 常量指针** 的辨析
//直译理解
//指针 int* 常量 const p
//指针常量—— "int *" + "const p"="int *const p"
//常量指针—— "const"+ "int *p"="const int *p"
//近水楼台先得月,离谁近就修饰谁
//先忽略类型名, 看const离谁近一些
int a = 10, b = 20;
//const int* p1 忽略类型int ,就得到 const* p1, const修饰 *p1,p1是指针,*p1是指针指向的对象,不可更改
//const修饰的是指针,指针指向可以改,指针指向的值不可以更改
const int* p1 = &a;//常量指针
p1 = &b;//true
*p1 = 20;//false
//int const* p2 忽略类型int ,就得到 const* p2,const修饰 *p2,p2是指针,*p2是指针指向的对象,不可更改
//const修饰的是指针,指针指向可以改,指针指向的值不可以更改
int const* p2 = &a;//常量指针
p2 = &b;//true
*p2 = 20;//false
//int* const p3 忽略类型int ,就得到 *const p3;const修饰 p3, p3不可更改,p3指向的值可以更改
int* const p3 = &a;//指针常量
p3 = &b;//false
*p3 = 20;//true
//const int* const p4 忽略类型int ,就得到 const * const p4
//前一个const 修饰 *p4,后一个const 修饰 p4,指针p4及其p4所指的对象值均不可改变
const int* const p4 = &a;
p4 = &b;//false
*p4 = 20;//false
system("pause");
return 0;
}