C语言中const修饰的指针

2023-11-29 0 232

当用const进行修饰时,根据const位置的不同有三种不同效果。 判断的标准是:const修饰谁,谁的内容就是不可变的。

const修饰指针变量时候有三种情况:

1 const 修饰取值操作(修饰星号*)

int a = 10;
const int* p1 = &a;
const int *p2 = &a;
int const* p3 = &a;
int const *p4 = &a;

以上两种指针p1,p2,p3,p4的声明等价,当const在星号 * 前面,此时可以理解为const修饰的是星号和变量 (*p)(指针的取值操作),限定了指针p1-p4取值操作是只读的,不能修改,但是p1-p4指针变量是可以修改的。

*p1 = 100; //error 取值时是只读的,无法修改a的值
p1 = NULL; //不报错,指针的指向是可以更改的。

2 const 修饰指针变量

int* const p1 = &a;
int *const p2 = &a;

以上两种声明等价,当const在星号 * 和变量名之间,可以理解为const修饰的是指针变量p1,p2,即指针p1和p2的值(指向)不能修改,但是p1,p2的取值操作时候的值可以修改。 声明时必须初始化指针变量,一旦完成初始化就不能再指向其他地址。

*p1 = 100; //合法,此时a的值变为100
p1 = NULL; //error,指针变量的指向不能修改

3 两个const修饰

const int* const p1 = &a;

此时p1的指向不能修改,且p1的取值操作的值也不能修改

*p1 = 100; //error
p1 = NULL; //error
a = 100; //并不影响pi指向的a的值的修改

本文来源:www.lxlinux.net/8249-2.html,若引用不当,请联系修改。

相关文章

猜你喜欢
官方客服团队

为您解决烦忧 - 24小时在线 专业服务

  • 0 +

    访问总数

  • 0 +

    会员总数

  • 0 +

    文章总数

  • 0 +

    今日发布

  • 0 +

    本周发布

  • 4975 +

    运行天数

你的前景,远超我们想象