https://www.runoob.com/w3cnote/c-constant-pointer.html
作用
- 修饰变量,说明该变量不可以被改变;
- 修饰指针,分为指向常量的指针和指针常量;
- 常量引用,经常用于形参类型,即避免了拷贝,又避免了函数对值的修改;
- 修饰成员函数,说明该成员函数内不能修改成员变量
常量指针
定义: 又叫常指针,可以理解为常量的指针,也即这个是指针,但指向的是个常量,这个常量是指针的值(地址),而不是地址指向的值。
关键点:
- 1.常量指针指向的对象不能通过这个指针来修改,可是仍然可以通过原来的声明修改;
- 2.常量指针可以被赋值为变量的地址,之所以叫常量指针,是限制了通过这个指针修改变量的值;
- 3.指针还可以指向别处,因为指针本身只是个变量,可以指向任意地址;
代码形式:
int const* p; const int* p;
指针常量
定义:本质是一个常量,而用指针修饰它。指针常量的值是指针,这个值因为是常量,所以不能被赋值。
关键点:
代码形式:
int* const p;
在实际应用中,常量指针要比指针常量用的多,比如常量指针经常用在函数传参中,以避免函数内部修改内容。
- 1.它是个常量!
- 2.指针所保存的地址可以改变,然而指针所指向的值却不可以改变;
- 3.指针本身是常量,指向的地址不可以变化,但是指向的地址所对应的内容可以变化;
size_t strlen(const char* src); //常量指针,src的值不可改变; char a[] = "hello"; char b[] = "world"; size_t a1 = strlen(a); size_t b1 = strlen(b);
虽然a、b是可以修改的,但是可以保证在strlen函数内部不会修改a、b的内容。