常量指针
指向常量的指针,形式为:
const type * pointer = ⌖
const修饰的是(*pointer),因此指针指向的内容是不可变的,看起来像是指向了一个常量,而指针本身是可以改变的。
指向变量的指针可以对常量指针赋值,常量指针不能赋值给指向变量的指针,否则赋值过后常量指针指向的原内存有可能被修改,产生安全问题。
指针常量
为const类型的指针,形式为:
type * const pointer = ⌖
const修饰的是pointer,因此指针本身是不可变的,只能指向固定的内存,必须要进行初始化,指针指向的内容是可以改变的。
常量指针常量
形式为:
const type * const pointer = ⌖
此时指针本身和指针所指向的内容都是不可以改变的。
常引用
被引用对象不可以通过常引用改变,可以用来保护函数的形参不被改变。形式为:
const type & reference = var
存在常引用,但不存在引用常量这种说法,因为引用本身有引用常量的意义。