首页 > 试题广场 >

将“引用”作为函数参数有哪些特点?

[不定项选择题]
将“引用”作为函数参数有哪些特点?
  • 引用传递和指针传递没有差别
  • 传递变量的引用给函数与传递指向变量的指针在改变变量的值的效果上是一样的
  • 使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本;
  • 指针传递下,在主调函数的调用点处,必须用变量的地址作为实参。而引用更容易使用,更清晰。
B不对吧,最简单的就在在函数中使用sizeof运算符,传指针和引用的结果明显不一样啊。
发表于 2018-06-05 23:18:44 回复(0)

(1)传递引用给函数与传递指针的效果是一样的。这时,被调函数的形参就成为原来主调函数中的实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其相应的目标对象(在主调函数中)的操作。

(2)使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本;如果传递的是对象,还将调用拷贝构造函数。因此,当参数传递的数据较大时,用引用比用一般变量传递参数的效率和所占空间都好。

(3)使用指针作为函数的参数虽然也能达到与使用引用的效果,但是,在被调函数中同样要给形参分配存储单元,且需要重复使用"*指针变量名"的形式进行运算,这很容易产生错误且程序的阅读性较差;另一方面,在主调函数的调用点处,必须用变量的地址作为实参。而引用更容易使用,更清晰。

发表于 2014-10-25 00:26:11 回复(0)
对于B我表示不认同,因为指针传递依然是单向传值
发表于 2016-10-07 11:00:08 回复(8)
不不不。传递指针和引用不一样,试想一下传递指针和传递指针的引用就明白了。
发表于 2016-08-17 19:39:55 回复(3)
引用传递和指针传递确实可以得到相同的效果,但是指针传递依旧是值传递,依旧会产生副本。
发表于 2018-08-23 19:36:48 回复(5)
d,引用更清晰不准确,const才可以,非const引用使得调用代码无法判断被穿入对象是不是输出,会不会被改变
发表于 2022-11-23 18:10:07 回复(0)
使用一般变量传递函数的参数,调用时,要给形参分配存储,形参是实参副本。 引用传递参数,不会产生副本,直接对实参操作
发表于 2022-08-16 20:00:58 回复(0)
B选项对么?
指针作为形参可以改变指向的内存,引用无法改变指向的内存。
发表于 2021-08-08 22:08:32 回复(0)

传指针做参数和传引用左参数的效果,在某些情况下是完全不一样的.

#include<iostream>
void allocate_memory(char* ptr) {
    ptr = new char[100];
}

void allocate_memory(char*& rptr) {
    rptr = new char[100];
}

这两个函数的效果一样么?很明显第一个函数有内存泄漏.

发表于 2021-02-24 13:31:11 回复(0)
<p>调用函数时不会改变实参指针变量的值,但可以改变实参指针变量所指向变量的值。 ——第三版谭浩强版cpp设计P163</p>
发表于 2020-11-30 19:05:43 回复(0)
效果毛线的一样
发表于 2020-03-07 09:29:15 回复(0)
xcn头像 xcn
函数调用时,变量的地址可以作为实参
发表于 2019-11-10 10:13:12 回复(0)
int& == int *const
const int& == const int *const
发表于 2019-09-01 09:45:25 回复(0)
屏蔽此题
发表于 2019-05-23 17:27:23 回复(0)
C++ primer上好像写过,传指针依然是单向传值吧(无法改变实参的值)
发表于 2019-02-28 16:49:54 回复(1)
对于B,我只能说,C++里只有2种参数传递,值传递和传引用传递,地址传递本质上还是属于值传递,因为会在调用函数时自动创建实参地址的副本。
发表于 2018-09-07 00:12:52 回复(0)
Bib头像 Bib
这个B答案,真不知道是为什么是对,感觉是错的一样
发表于 2018-08-05 21:16:42 回复(0)
哪里有比较权威的解释
发表于 2017-08-08 16:25:50 回复(0)
来自@T-corb
(1)传递引用给函数与传递指针的效果是一样的。这时,被调函数的形参就成为原来主调函数中的实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其相应的目标对象(在主调函数中)的操作。

(2)使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本;如果传递的是对象,还将调用拷贝构造函数。因此,当参数传递的数据较大时,用引用比用一般变量传递参数的效率和所占空间都好。

(3)使用指针作为函数的参数虽然也能达到与使用引用的效果,但是,在被调函数中同样要给形参分配存储单元,且需要重复使用"*指针变量名"的形式进行运算,这很容易产生错误且程序的阅读性较差;另一方面,在主调函数的调用点处,必须用变量的地址作为实参。而引用更容易使用,更清晰。

发表于 2017-05-31 15:21:11 回复(0)
指针传递和引用传递效果怎么会一样呢?这么说很不严谨。
发表于 2017-04-18 10:14:33 回复(0)