指针常量与常量指针区别
指针常量(Constant Pointers)和常量指针(Pointers to Constants)是两种不同的C++指针类型,它们的区别在于常量性(constness)的位置和应用:
- 指针常量(Constant Pointers):这是一个指针,一旦初始化后,就不能再改变指向其它位置。然而,你可以改变指针所指向的内容。定义指针常量的格式如下:
int value = 5; int *const ptr = &value;
在这个例子中,
ptr
是一个指针常量,指向value
。你不能改变ptr
的值使其指向其他位置,但你可以改变value
的值。int anotherValue = 10; ptr = &anotherValue; // Error! ptr is a constant pointer. *ptr = 10; // OK. Changing the value where ptr points to is fine.
- 常量指针(Pointers to Constants):这是一个指针,它指向的内容不能被改变,但是你可以改变指针指向的位置。定义常量指针的格式如下:
int value = 5; const int *ptr = &value;
在这个例子中,
ptr
是一个常量指针,指向value
。你不能通过ptr
改变value
的值,但你可以改变ptr
的值使其指向其他位置。int anotherValue = 10; ptr = &anotherValue; // OK. Changing the pointer to point somewhere else is fine. *ptr = 10; // Error! ptr is a pointer to constant.
总的来说,指针常量是不能改变指向的指针,而常量指针是不能改变所指向的值的指针。