Delphi中的值传递与址传递
值传递
值:保存在内存单元中的值。
var
{在内存中声明了一个内存单元Value,用来保存Integer类型的数据}
Value: Integer;
{在内存单元Value中保存了数据1,即值为:1}
Value:= 1;
值传递:将一个内存单元中的值复制到另一个内存单元中。
{在过程TransmitValue执行时,会声明一个临时内存单元TempValue,并将输入参数Value的值1赋值给TempValue
Value将与TempValue都等于1,但这是两个1。如果此时Value改变它的值是不会影响到TempValue,反之一样。
}
procedure TransmitValue(TempValue : Integer);
begin
TempValue := TempValue * 2;
end;
{将内存单元Index中的1赋值给TempValue}
TransmitValue(Value);
注意:值传递在传递完成后实参与形参指向不同的对象,尽管对象的内容一样。
址传递
址:内存单元的物理地址。
var
{在内存中声明了一个内存单元Address,其物理地址为:'0x12345',用来保存String类型的数据,}
Address: String;
注:'址'是引用类型
{在内存单元Address中保存了数据'址'的物理地址,即值为:'0x232'}
Address:= '址‘;
址传递:将一个内存单元的物理地址赋值给另一个内存单元中。
{在过程TransmitAddress执行时,会声明一个临时内存单元TempAddress,并将输入参数Address的内存地址'0x12345'赋值给TempAddress}
procedure TransmitAddress(var TempAddress : String);
begin
TempAddress := TempAddress + '呵呵’;
end;
{将内存单元Address的物理地址赋值给TempAddress}
TransmitAddress(Address);
注意:址传递在传递完成后实参与形参都指向同一个对象。