把内存想象成盒子(有两种状态:敞口盒、闭口盒),敞口盒里的内容可被改变(存变量),闭口盒的内容不可被改变(存常量)。
指针也有两种状态:可变指向、恒定指向。const int* p1; int* const p2; p1是可变指向的,p2是恒定指向。(以最靠近指针p的修饰符为准)
//a、b、指针p都在栈区,a、b都是敞口盒,指针p可变指向// int a{ 10 }, b{11};//a、b在栈区 int* p = &a;//指针p也在栈区,p可以指向a也可以指向b *p = 5;//改变地址a的内容 cout << a;//5 p = &b;//p指向b cout << *p;//11
int a2{ 10 }, b2{11}; int* const p2 = &b2;//p2只能指向地址b2,不能改方向 *p2 = 5;//改变地址b2的内容 //p2 = &c;//错误
原文:https://www.cnblogs.com/xixixing/p/12031401.html