常量指针、指针常量的识别技巧:
const读作常量,*读作指针,按照顺序读。 const int * ptr; //const读作常量,*读作指针,按照顺序读作常量指针。 int const *ptr; //const读作常量,*读作指针,按照顺序读作常量指针。 int * const ptr; //const读作常量,*读作指针,按照顺序读作指针常量。
-
常量指针(const pointer):
-
常量指针是指其指向的对象是常量,不能通过该指针修改所指向的值,但可以修改指针本身指向的地址。
-
示例:
const int *ptr;或int const *ptr; -
例如:
const int *ptr = &a;表示ptr是一个指向int类型常量的指针,不能通过ptr修改*ptr所指向的值,但可以通过其他途径修改a的值。
-
-
指针常量(pointer to const):
-
指针常量是指该指针本身是常量,即指针一旦初始化后不能再指向其他地址,但可以通过该指针修改其指向对象的值。
-
示例:
int *const ptr; -
例如:
int *const ptr = &a;表示ptr是一个指向int类型的常量指针,不能改变ptr的指向,但可以通过*ptr修改a的值。
-
-
常量引用(const reference):
-
常量引用是指通过引用绑定的变量不能被修改,但是引用本身不是常量,可以绑定不同的变量。
-
示例:
const int &ref = a; -
例如:
const int &ref = a;表示ref是对a的一个常量引用,不能通过ref修改a的值,但可以将ref绑定到其他int类型的常量或非常量。
-
-
引用常量(reference to const):
-
引用常量是指引用本身是常量,一旦初始化后不能再绑定其他变量,但可以通过该引用修改所绑定变量的值。
-
示例:
int &const ref;(C++ 中不支持这种写法,引用本身不能是常量) -
例如:
int &const ref = a;这种写法在 C++ 中是不允许的,因为引用本身不能是常量,只能是常量引用。
-
总结:
-
常量指针和指针常量的主要区别在于一个是指针指向的值是常量,另一个是指针本身是常量。
-
常量引用和引用常量的区别在于一个是引用所绑定的值是常量,另一个是引用本身是常量(实际上,引用本身不能是常量,只能是常量引用)。
406

被折叠的 条评论
为什么被折叠?



