一个函数可不可以返回两个值?下面的这道题目究竟该选什么呢?

时间:2021-03-08 09:51:23
有两个函数:

int fun1(int a,int b)
{
   b=++a;
   return a+b;
}

int fun2(int a,out int b)
{
   b=++a;
   return a+b;
}

则下面说法中,正确的是

A. 函数fun1可以返回两个值,函数fun2只能返回一个值
B. 函数fun1只能返回一个值,函数fun2可以返回两个值
C. 函数fun1和fun2都可以返回两个值
D. 函数fun1和fun2只能返回两个值

16 个解决方案

#1


对不起,D选项打错了,应该是

D. 函数fun1和fun2只能返回一个值

#2


这个主要考了 按值传递,按地址传递
按地址传递,传递后,那个函数会修改传入参数

#3


答案是B

#4


int fun2(int a,out int b)
{
   b=++a;
   return a+b;
}
返回值一个是return a+b的值;
一个是out 出的b的值.

测试:
int a = 0;
int b = 0;
int ret fun2(a, out b);
System.Console.WriteLine("a:{0} b:{1}", a, b);

#5


选B..

一个函数当然可以返回两个值,通过ref or out就可以达到目的,以上你的第二个方法就是用到了out..

#6


同意b是输出值,但觉得输出值不应该叫返回值

#7


B

#8


同意老鼠的观点,那怎么能叫返回值呢?!

忽悠人

#9


所以感觉是D

#10


对于能不能叫返回两个值,每个人都有自己的理解,或者说在不同的场合理解也应该不一样,感觉有点"文字游戏"的味道了...只要大家自己心里清楚就行了..

#11


d
那玩不是返回值

#12


按值传递和按地址传递的区别。

#13


仅讨论函数返回的话,一个函数返回两个值可以设置返回类型为数组。

#14


d

#15


传入被改变的值跟函数的返回值是一个概念吗!?
我还是选择D。

#16


答案應該是D,雖然D同時還有一個輸出參數﹐但是如果把輸出參數也當返回值,概念上應該是不正確的。
因為它不是函數返回的﹐而是在函數過程中改變了輸入的參數值.

#1


对不起,D选项打错了,应该是

D. 函数fun1和fun2只能返回一个值

#2


这个主要考了 按值传递,按地址传递
按地址传递,传递后,那个函数会修改传入参数

#3


答案是B

#4


int fun2(int a,out int b)
{
   b=++a;
   return a+b;
}
返回值一个是return a+b的值;
一个是out 出的b的值.

测试:
int a = 0;
int b = 0;
int ret fun2(a, out b);
System.Console.WriteLine("a:{0} b:{1}", a, b);

#5


选B..

一个函数当然可以返回两个值,通过ref or out就可以达到目的,以上你的第二个方法就是用到了out..

#6


同意b是输出值,但觉得输出值不应该叫返回值

#7


B

#8


同意老鼠的观点,那怎么能叫返回值呢?!

忽悠人

#9


所以感觉是D

#10


对于能不能叫返回两个值,每个人都有自己的理解,或者说在不同的场合理解也应该不一样,感觉有点"文字游戏"的味道了...只要大家自己心里清楚就行了..

#11


d
那玩不是返回值

#12


按值传递和按地址传递的区别。

#13


仅讨论函数返回的话,一个函数返回两个值可以设置返回类型为数组。

#14


d

#15


传入被改变的值跟函数的返回值是一个概念吗!?
我还是选择D。

#16


答案應該是D,雖然D同時還有一個輸出參數﹐但是如果把輸出參數也當返回值,概念上應該是不正確的。
因為它不是函數返回的﹐而是在函數過程中改變了輸入的參數值.