常量指针和指针常量和常量指针常量

常量指针和指针常量和常量指针常量

常量指针:指向常量的指针。

示例一:

1
2
int n = 10;
const int *p = &n;

此时不能通过指针修改数据对象的值,但可以改变指针的指向。比如此时指针p不能改变n的值,但是可以指向另一个变量,把上面的代码做修改:

1
2
3
4
int n = 10, m = 30;
const int *p = &n;//常量指针p初始化指向n
*p = 20;// 这一步错误,这是一个常量指针,不能更改目标数据对象的值
p = &m;//这一步正确,可以修改指向

示例二:

1
void PrintObj(const int *p);

比如我们要定义一个函数,功能是打印某个对象的值,我们此时只希望函数有打印功能,不希望传进来的指针可以被修改,我们就把它变成常量指针,这样就只能打印,不能修改.

指针常量:指针指向的位置不可变化。

要注意一下,指针常量和其他常量一样,必须在定义时初始化。

此时不可以把指针指向其他地方,但是可以改变指针所指的目标数据对象的值。

示例一:

1
2
3
4
int n = 10, m = 30;
int *const p = &n;//定义一个指针常量指向n
*p = 40;//合法,可以改变指针所指的目标数据对象的值
p = &m;//不合法,不能修改指针指向。

常量指针常量:指向常量的指针常量(指针的双重只读属性)

他的性质是**:指针值不可改变,指向的目标数据对象也不可改变。**

1
2
3
4
int n = 10, m = 30;
const int *const p = &n;
*p = 40;//错误
p = &m;//错误

使用场合,作为函数的参数.


最后修改于 2018-12-25

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。