1. const int *ptr = NULL; <=> int const *ptr = NULL;指针
1) 表示指向符号常量的指针变量,指针变量自己并不是const因此能够指向其余变量。变量
2) const 的做用能够看做是“禁止经过*ptr"来改变被ptr指向的变量的值,但被指向的变量 其自己可否改变须要看其定义。技巧
eg: const int i = 1, int j = 2;error
ptr = &i; // okco
*ptr = 27 // errorconst
i = 2 // error i is const
ptr = &j; // ok
*ptr = 28; // error
j = 3; // ok
2. const int *ptr vs int * const ptr;
1) 要区分以上两种形式重点看const与*的相对位置:
const在*以前表示”指向符号常量的指针“
const在*以后表示”指向int类型变量的常量指针“
注意:若声明成 int * const ptr = NULL;则ptr的值不可改即不可再指向其它变量,
但能够经过*ptr修改其指向的变量(若是指向了的话)。
2)识记技巧
看const修饰的是*ptr仍是ptr?
当 const 在 * 以前能够认为 const修饰的是 *ptr,此时*ptr的”值“不可变,ptr的值可变
当 const 在 * 以后能够认为 const修饰的是 ptr,此时ptr的值不可变,*ptr的值可变
const修饰谁,谁的值就不可再变。
3. const int * const ptr;
1) 表示”指向int型符号常量的常量指针“
2) const 即修饰了 *ptr 表示不可经过*ptr修改其指向变量的值
又修饰了 ptr 表示ptr中的值不可再修改即不能再指向其余变量