首页 > 试题广场 >

某函数申明如下:void Func(int &nVal1);

[单选题]
某函数申明如下:
void Func(int &nVal1);
有int a,下面使用正确的为:
  • Func(a)
  • Func(&a)
  • Func(*a)
  • Func(&(*a))
C++中&有另外一个含义,用来声明引用,&不是地址运算符,而是类型标识符的一部分。就像声明char*指的是指向char的指针一样,int &指的是指向int的引用,变量和变量的引用指向相同的值和内存单元,引用相当于变量的别名。因此在参数传递时也只需要传递变量名即可,即Func(a)。它的形式上看起来与值传递相同,但它传递参数时不复制副本,与指针一样可以修改主调函数的参数值,且使用起来更方便。
发表于 2015-09-07 10:47:16 回复(1)
第一, fun(int a), 你调用fun(b)时 , 传的是b的值的副本,当函数里面改变参数a时,只是改变了b的副本,对b没影响
第二, fun(int &a), 你调用fun(b)时, 传的是b的内存地址啊, 说白了就是b, 函数中改变参数a就是改变b。

值传递:一个是b的copy,
地址传递:一个是b的内存地址

fun(int *a)是传地址
编辑于 2015-09-06 16:17:59 回复(4)
答案:A
voidFunc(int&nVal1);
参数&,表示引用,也就是变量的另一个别名。
&(引用)==>出现在变量声明语句中位于变量左边时,表示声明的是引用.
&(取地址运算符)==>在给变量赋初值时出现在等号右边或在执行语句中作为一元运算符出现时
                  表示取对象的地址.
发表于 2015-09-07 17:05:45 回复(1)
在C++中,既有引用又有取地址,其实他们的区别可以用一句话概括:和类型在一起的是引用,和变量在一起的是取址。比如     int a= 3;    int &b=a;       //引用;                                                 int *p= &a;        //取地址
对于函数声明来说,例如本题:voidFunc(int&nVal1);&和类型在一起,是引用。如果想传递变量的地址,像答案B一样,
则需要函数声明时变为:voidFunc(int * ptr_nVal1);
发表于 2015-11-17 16:21:29 回复(0)
这就是个引用函数啊,参数是引用类型的,当然直接Func(a)就行了啊。
发表于 2015-09-06 16:16:13 回复(0)
记住,引用只是一个别名,在函数调用时,直接用原变量的名字即可。
发表于 2016-05-20 12:39:06 回复(0)
选A,千真万确
发表于 2015-09-13 21:22:48 回复(0)
D和A的表达意思不一样吗,我想请问
发表于 2015-09-08 10:13:02 回复(2)
D错的原因是:a是个int型变量,*a是个啥?改成*(&a)还有点道理
发表于 2023-10-02 17:11:48 回复(0)
想问既然C++的&可以是取地址符也可以是引用 那如果这里取的是取地址符的含义,A和D选项不是一样的嘛(真心不知道怎么区分)
发表于 2023-09-02 11:16:05 回复(0)
第一, fun(int a), 你调用fun(b)时 , 传的是b的值的副本,当函数里面改变参数a时,只是改变了b的副本,对b没影响 ;
第二, fun(int &a), 你调用fun(b)时, 传的是b的内存地址啊, 说白了就是b, 函数中改变参数a就是改变b。

值传递:一个是b的copy,
地址传递:一个是b的内存地址

fun(int *a)是传地址
发表于 2022-05-06 18:46:52 回复(0)
表示取出变量的值,a应该是个变量,所以直接可以穿a
发表于 2021-05-27 09:50:31 回复(0)
插个眼,形参含&,那么直接传变量名称也是OK的~
发表于 2021-03-29 09:48:14 回复(0)
这题出现在C练习中?
发表于 2021-03-20 10:16:27 回复(0)
int &指的是指向int的引用,变量和变量的引用指向相同的值和内存单元,引用相当于变量的别名。因此在参数传递时也只需要传递变量名即可,即Func(a)。
发表于 2020-07-01 16:24:03 回复(0)
c选项怎么说?是什么意思?

发表于 2020-04-08 18:52:47 回复(0)
这咋分清是c还是c++啊
发表于 2019-09-02 22:26:38 回复(1)
和类型在一起的是引用,和变量在一起的是取址。比如     int a= 3;    int &b=a;       //引用;                                                 int *p= &a;        //取地址
发表于 2018-10-06 15:35:14 回复(0)
这种题一定要注意不要犯“眼瞎病”
发表于 2017-05-08 20:27:28 回复(0)
函数Func的参数定义的是一种引用,引用的用法跟值传递用法一样,但效果跟指针一样
发表于 2015-11-30 21:07:20 回复(0)