>>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参数返回是一样的!