html怎么定义常量数,C++ 常量

修饰指针

修饰指针的情况比较多,主要有以下几种情况:

1、const 修饰 *p,指向的对象只读,指针的指向可变:

int a = 9;

int b = 10;

const int *p = &a;//p是一个指向int类型的const值,与int const *p等价

*p = 11; //编译错误,指向的对象是只读的,不可通过p进行改变

p = &b; //合法,改变了p的指向

这里为了便于理解,可认为const修饰的是 *p,通常使用 * 对指针进行解引用来访问对象,因而,该对象是只读的。

2、const 修饰 p,指向的对象可变,指针的指向不可变:

int a = 9;

int b = 10;

int * const p = &a;//p是一个const指针

*p = 11; //合法,

p = &b; //编译错误,p是一个const指针,只读,不可变

3、指针不可改变指向,指向的内容也不可变

int a = 9;

int b = 10;

const int * const p = &a;//p既是一个const指针,同时也指向了int类型的const值

*p = 11; //编译错误,指向的对象是只读的,不可通过p进行改变

p = &b; //编译错误,p是一个const指针,只读,不可变

看完上面几种情况之后是否会觉得混乱,并且难以记忆呢?我们使用一句话总结:

const 放在 * 的左侧任意位置,限定了该指针指向的对象是只读的;const放在 * 的右侧,限定了指针本身是只读的,即不可变的。

如果还不是很好理解,我们可以这样来看,去掉类型说明符,查看 const修饰的内容,上面三种情况去掉类型说明符 int 之后,如下:

const *p; //修饰*p,指针指向的对象不可变

* const p; //修饰p,指针不可变

const * const p; //第一个修饰了*p,第二个修饰了p,两者都不可变

const 右边修饰谁,就说明谁是不可变的。上面的说法仅仅是帮助理解和记忆。借助上面这种理解,就会发现以下几种等价情况:

const int NUM = 10; //与int const NUM等价

int a = 9;

const int *p = &a;//与int const *p等价

const int arr[] = {0,0,2,3,4}; //与int const arr[]等价

Amanda

Amanda

146***9601@qq.com11个月前 (08-06)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值