第12课 经典问题解析一

关于const的疑问:

const什么时候是只读变量?什么时候是常量?

const常量的判别准则:

 

示例程序与结果如下:

 

从输出结果可以看出,它们代表的是同样的内存空间。这个程序告诉我们,C++为const修饰的变量仍然分配空间。一般通过指针或者引用来使用这片空间。

 示例程序:

 

第20行将y的地址转换为非const的指针。并在22行修改这块地址空间的值。

示例程序:

 

27行将y赋值给用const修饰的z将生成一个只读变量z。而不是真正意义的常量。

示例程序:

 

打印结果为a,a,c。第40行将字符a赋值给char引用rc,但是这并不影响引用trc的值,因为trc在初始化的时候使用的是不同类型的变量,即trc是int型引用,c是char型,这样就导致又产生一个只读变量,因此,我们在40行改变rc(rc和c指的同一片空间)的值,不会影响到trc所代表的内存空间。

 

引用与指针有什么关系?如何理解“引用的本质就是指针常量”?

 

 

 

 

为了回答上图中的问题,给出如下的程序:

 

上图中的程序编译运行没有错误。

再次修改程序,结果如下:

 

我们在17行添加了数组的定义,结果编译出错了。

原因在于,C语言中的数组中每个元素都是相邻的,地址是递增的,而C++兼容C语言,因此,C++具有同样的特性。

而17行的引用数组破坏了这个特性。因为这几个元素的地址已经不是相邻的了。

在C++中不支持引用数组。

小结:

  指针是一个变量

  引用是一个变量的名字

  const引用能够生成新的只读变量

  在编译器内部使用指针常量实现引用

  编译时不能直接确定初始值的const标识符都是只读变量

 

转载于:https://www.cnblogs.com/wanmeishenghuo/p/9527311.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值