Const *ptr ptr

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中的值不可再修改即不能再指向其余变量

相关文章
相关标签/搜索