这篇文章主要介绍了C++中引用传递与指针传递的区别(面试常见),需要的朋友可以参考下。
在面试的过程中,有不少面试官提了一个问题,C++中引用传递和指针传递的区别?应该不少人联想到了swap函数,只知道既可以用引用来实现,又可以用指针传递来实现,至于二者有何区别,还真没有考虑过。通过在网上搜集资料,自己也整理了一下。
引用的规则:
(1)引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)。
(2)不能有NULL引用,引用必须与合法的存储单元关联(指针则可以是NULL)。
(3)一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象)。
指针传递的实质:
指针传递参数本质上是值传递的方式,它所传递的是一个地址值。值传递过程中,被调函数的形式参数作为被调函数的局部变量处理,
即在栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的
任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。(这里是在说实参指针本身的地址值不会变)
指针传递和引用传递一般适用于:
函数内部修改参数并且希望改