【编程语言】【const】

转自:https://blog.csdn.net/bianlongpeng/article/details/77199272

问题:如果函数需要传入一个指针,面试官可能会问是否需要为该指针加上const,把const加在指针不同位置有什么区别;如果写的函数需要传入的参数是一个复杂类型的实例,面试官可能会问传入值参数或者引用参数有什么区别,什么时候需要为传入的引用参数加上const?

1、const是用来声明一个常量的,当你不想让一个值改变时就用const。

当const修饰指针时:

     int b=100;

     const int*a=&b;    [1]

     int const *a=&b;   [2]

     int* const a=&b;   [3 ]

     const  int* const  a=&b;  [4]

如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;因此,[1]和[2]的情况相同,都是指针所指向的内容为常量(const放在变量声明符的位置无关),这种情况下不允许对内容进行更改操作,如不能*a=3;

如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量,[3]为指针本身是常量,而指针所指向的内容不是常量,。这种情况下不能对指针本身更改操作,如a++是错误的;

[4]为指针本身和指向的内容均为常量

2、用const修饰函数的输入参数。

      第一,对于非内部数据类型的输入参数,应该将“值传递”的方式改为“const引用,目的提高效率”。例如将void Func(A a)改为voidFun(const A&a)。第二,对于内部数据类型的输入参数,不要将“值传递”的方式改为“const引用传递”。否则既达不到高效率的目的,有降低了函数的可理解性。例如void Func(int x)不应该改为void Func(const int&x)。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值