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

版权声明:本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。 https://blog.csdn.net/riba2534/article/details/85226377

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

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

示例一:

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

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

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

示例二:

void PrintObj(const int *p);

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

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

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

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

示例一:

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

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

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

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

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

猜你喜欢

转载自blog.csdn.net/riba2534/article/details/85226377