面试热门题C与C++的区别-------指针和引用

14 篇文章 0 订阅
13 篇文章 0 订阅

在面试过程中,C语言和C++的区别总是面试官的侧重点,而指针和引用更是容易被问到,指针和引用的区别很简单,但很少有人能有全面的,有层次有条理的回答这个问题,所以有条理的总结归纳就显得尤为重要。

先来了解什么是指针,什么是引用

指针:存储内存中某一块空间地址的变量。

引用:引用不是定义一个新变量,而是给一个已经定义的变量起一个新的别名。

定义的格式:

指针:类型 *变量名 = 已有变量地址(&已定义过的变量名)

引用:类型 &引用变量名 = 已定义过的变量名

特点:

指针:1.一个指针只能指向一块空间

   2.指针可以不初始化(不过不建议不初始化)

   3.指针可以在初始化的时候指向一个变量,但在之后使用时可以改变它的内容

   4.sizeof指针时得到的是所指向对象地址的大小

   5.指针自加自减,是指针所指向对象的地址自加自减一个类型大小

引用:1.一个变量可取多个变量名

   2.引用必须初始化

     3.引用只能在初始化的时候引用一次,不能再改变引用其他的变量

   4.sizeof引用得到的是所指向变量的大小。

   5.引用自加自减,是引用对象的值自加自减

const修饰的指针和引用:

指针:const修饰指针,指针不能改变,指针指向的内容可以改变。

引用:1.常量具有常性,只有const修饰的常引用才能引用常量

   2.const修饰引用,引用内容不能改变

   3.不能给不同类型的引用赋值,例如将一个double类型的变量d赋值给一个int类型的引用i,就不能编译通过。因为赋值时会生成一个临时变量。d引用的是这个带有常性的临时变量,所以不能赋值。

作为参数:

   1.值传递:如果形参为非引用的传值方式,则生成局部临时变量接收实参的值。

   2.引用传值:如果形参为引用类型,则形参是实参的别名(当不希望函数内改变参数x的地址时,尽量采用常引用传参)。

   3.指针传参:如果形参为指针类型,则生成匿名对象接收地址

总结:

1.不要返回一个临时变量的引用。

2.如果返回对象除了函数的作用域依然存在,尽可能使用引用。

3.指针比引用更灵活,但是也更危险,使用指针时要先检查指针是否为空,指针指向的地址释放后最好置0,否则可能存在野指针问题。

如果还有什么没有考虑到的地方欢迎大家指出来!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值