自己写函数的小问题,函数可以返回两个值吗(10分)

  • 主题发起人 主题发起人 lcl_003
  • 开始时间 开始时间
哪有那么复杂啊,就是不用函数用过程也可以取得返回无限个参数的效果啊
你只要在过程里给你变量赋直就是了。当然这里说的变量可是不能只是函数级别的
啊。
 
yuleibo说得对,F1代表的是函数返回值,相当于result,
好像也可以写成:result.a,result.b
 
那又返回两个返回值的函数?
请问,什么叫做函数????初一的数学您可是没有认真学啊!

火龙真人说得好!可以用无限个参数传返回值!!!
 
>>TO :yeskert1,

>>你的方法是严重错误的,我来给你解释这个是怎么回事
>>type
>> my_data_type=record
>> a,b:integer;
>> end
>>function f1(i:integer):my_data_type;
>>begin
>> f1.a:=100;
>> f2.b:=200;
>>end;
>>调用:
>>var tmp:my_data_type;
>> i,j:integer;
>>begin
>> tmp:=f1(7);
>> i:=tmp.a;
>> j:=tmp.b
>>end;
>>首先,你在函数里面有一个f1.a,f1.b 你的这个F1是什么的?f1本来应该是你的函数,可是
>>你为什么却给一个函数来赋值,为什么?并没有谁说明一个函数是纪录类型的返回值。
>>这个是不对的。
>>在编写函数里面有一个返回值,他是怎么出来的,是给函数赋值,可是你的函数赋值是根据
>>什么依据来的。???我才看过函数值的书,不过可能是我理解的不对,

yeskert1错就错在f2.b:=200;这个F2不对,不过这一定是笔误,在函数体内
如果给与函数名同名的变量就是给返回值赋值,就象给Result赋值一样,每个函数都有这两个变量,
不需要也不能人为定义,实际上和函数名相同的变量和Result变量是存放在同一内存空间的.
如果在函数体中取一个与函数名想同的变量的值,就形成递归调用,以会进入下一次的函数调用.

函数返回记录下是返回一个记录,只不过是返回一个记录类型的值而已,这对于需要返回多个值的时候是很有用的,
另一种返回多个值的办法就是通过var参数返回,通过var参数返回与通过函数值返回并没有什么大的区别,
还有一种办法就是把变量的指针作为参数传入,这种情况和通过var参数返回是一样的!
 
按我的理解应该是这样吧
type
my_data_type=record
a,b:integer;
end
function f1(i:integer):my_data_type;
begin
f1.a:=100;
f1.b:=200;
end;
作为f1是一个函数,他赋值的时候应该怎么赋值呢?我们知识在函数内的语句里面,如果
是给函数名赋值,实际上就是赋值给返回值。f1函数的值是纪录型。他的赋值方法用
f1.a:=100;
f1.b:=200;
对吗? 还是应该一次性的赋值给,类似于这样(f1 := (a,b);)
总之,他的函数返回值成了一个纪录型,这个我还确实在以前没有学习到过。一般情况下的处
理我也是按照书上的,用按地址值来调用,在函数里面自动的来改变值,来达到改变函数外
部数据的目的,来实现所谓的返回多个值。
 
哦,大家继续讨论,可以让我这样的菜鸟好好提高一下:)

不过我的确是用yeskert1的方法试成功了啊。在函数内就是用f1.a,f1.b付的值啊。
难道 是蒙对了?
 
多人接受答案了。
 
后退
顶部