const用法

初学C++,有很多不明白的,这是第一篇博客,希望与大家共勉。很多摘自C++primer plus书籍。

一、首先介绍指针和const在不同位置的区别

1 const int *pt=&age;

2 int * const pt =&age;

3 const int* const pt = &age;

1const int *pt=&age;表示指针pt指向的值是const int,因此不能使用pt修改这个值。换句话说,*pt的值是const,不能被修改:

*pt+=1; 非法的

cin>>*pt; 非法的

但不意味着pt指向的值是一个常量。例如,可以直接通过age变量来修改age的值,但不能通过pt指针来修改它:

*pt=20; 非法的

age=20; 合法的

1const int *pt=&age;中的const只是防止修改pt指向的值,而不能防止修改pt的值。可以将一个新的地址,赋给pt:

int sage=80;

pt=&sage; 合法

允许pt++;

例如,C++ Primer Plus 中 P221,代码

int sum_arr(const int * begin, const int * end)

{

    const int * pt;

    int total = 0;

    for (pt = begin; pt != end; pt++)

        total = total + *pt;

    return total;

}

2.Int * const pt =&age;中使用const的方式,使得无法修改指针的值,使得pt只能指向age,但允许使用pt来修改age的值。

Const float g_earth=9.80;

Const float *pe=& g_earth; 合法的

float *pm=& g_earth; 非法的 禁止将const地址赋给非const指针,如果非这样做,使用强制转换类型。

3.const int* const pt = &age; 表示既不能通过pt修改age的值,也不能修改pt的值。

二、const修饰函数参数

传递过来的参数在函数内也是不可以改变的,例如:

Const保护数组

为了防止函数无意中修改数组的内容,可在声明形参时,使用关键字const。例如:

void show_array(const double ar[], int n);

该声明表明,指针ar指向的是常量数据。这意味着不能使用ar修改该数据,可以使用ar[0]这样的值,但不能修改。注意,这并不意味这原始数据必须是常量,而只是意味着不能在show_array()函数中修改这些数据。因此,在show_array()将数组视为只读数据。

如果在show_array()函数中执行以下操作,编译不成功,ar[0]+=10。

未完待续。。。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值