指向常量的指针
一个指向常量的指针变量。1
const char *pc = "abcd"; // 指针指向一个字符型常量
其中,不允许改变pc
所指向的常量的值(如pc[3] = 'x'
这是不允许改变的)。
pc
只是一个普通的指针, 还可以指向其他地址(如: pc = "efgh"
)。
常指针
指针变量所指的地址是常量, 而地址中所存放的内容是可以改变的。
1 | char * const pc = "abcd" |
如 :
1 | pc[3] = 'x'; //正确, 可以改变 |
指向常量的常指针
1 | const char * const pc = "abcd" |
这样的声明后,上面所说的两种改变的情况都不允许, 不能改变指针pc
的指向(地址), 也不能改变地址中的值
。
总结
常量指针:指向常量的指针
性质:不能通过指针修改目标数据对象的值,但可以改变指针值,使其指向其他地方
示例一:int n=10;const int *p = &n;
典型使用场合:作为函数参数,表示函数内部不能修改指针所指向的目标数据对象值
示例二:void PrintObject(const int *p);
指针常量:指针指向的位置不可变化
性质:不可将指针指向其他地方,但可改变指针所指向的目标数据对象值
示例三:int n = 10; int *const p = &n;
指针常量和其他常量一样,必须在定义时初始化常量指针常量:指向常量的指针常量(指针的双重只读属性)性质:指针值不可改变,指向的目标数据对象值也不可改变
示例四:const int n = 10; const int *const p = &n;
典型使用场合:主要作为函数参数使用
▲ 来自《学堂在线》
const
其实是左结合的, int * const
其中const
是作用在 *
上。const int
左边没东西, 只能作用在int
上了。
其中常量指针
用的比较多, 不能通过*p
修改它的值,作为函数的参数传递。