C++中const和引用修饰变量和函数的总结

本文详细介绍了C++中const修饰变量和函数的各种用法,包括const修饰变量的误区、常量指针与指向常量的指针、顶层const与底层const的区别。此外,还讨论了const在函数参数中的应用,如引用限定符和const限定符,以及它们与#define的区别。
摘要由CSDN通过智能技术生成

一、对于修饰变量的用法

对于const和&的基础用法就不说了。下面说点之前有误区和容易错的地方

const修饰变量的误区

关于const类型,这里有一个我之前的误区,我以为const定义的时候只能用常量初始化,但是实际上是没有这个规定的。const定义的变量可以用各种const,非const对其进行初始化,甚至可以是函数的返回值之类的。

const int a = 5//在编译的时候进行初始化,即类似于#define,进行全文替换
const int b = size();      //在执行的时候初始化
int n =7;
const int c = n;         //在执行的时候初始化

这个其实非常显然啦,因为在函数传参的时候,就能看出来,形参可以是const的,但是传进去的实参可以是非const的。[1]

对于这个问题就可以看出中文各种博客上面的说法有多垃圾了,就我看过的80%的博客都说const必须要用常量初始化,同时在编译时就完成了初始化。以后技术问题少看中文博客,之前被误导了那么久。


常量指针和指向常量的指针

指向常量的指针

const int *p,表示指向常量的指针,按照之前上篇文章中的方法C++
中复合类型声明的理解
从右到左看,p是一个指针,指向const
int,表示的意义就是不能通过p来修改p指向的值,而p本身所指向的地址是可以修改的。(此处也可以写成int const *p是一样的)

常量指针

int *const p,表示p本身是一个const,所以p所指的地址不会变,但是地址里的值是可以修改的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值