1.指向常量的指针
int A = 123;
const int*a = &A;
是一个简单的指向常量的指针,它不能通过指针a来改变A的值,但可以通过其他方式改变,比如直接修改就行(例如A = 12345)。
const int A = 123;
const int *a = &A;
在书写的时候我也才发现,不是指向常量的指针必须和const搭配,于是有了上面这个代码,同样可以运行,不同的是,这次的A被const修饰,不仅不能通过指针修改A的值,也不能通过其他方式修改。(例如A = 12345 就不可以)
综上所述,指向常量的指针可以指向一个常量也可以是一个变量。所谓的指向常量的指针只是要求不能通过该指针修改对象的值。既然叫指向常量的指针,那么说明指针自己并非常量,所以a定义完之后还可以修改指向的对象,比如指向c,d,e等等。(例如a = &c)
2.常量指针
int A = 123;
int* const a = &A;
这是一个简单的常量指针,也就是指针作为一个常量,也就是指针指向的地址无法改变,即a无法改变。但是A的值可以改变。(例如a = &b 不可以 ,A = 12345可以)
const int A = 123;
int* const a = &A;
这个代码是错的,我也能太理解,显示:&A是一个const int*类型,不能赋值给int* const类型。
目前才疏学浅,无法解答。我会在后面的路途找出答案
如果单看代码容易混淆可以这样记:从右向左阅读这个声明。
比如:int * const a可以看成 a const int*,也就是先常量再指针,就是常量指针
这些大概也许算是我的笔记?本人才疏学浅,只学了点皮毛。如果有错的地方,请一定告诉我,我会及时修正。