Finding the instance reference of an object

Marc 'BlackJack' Rintsch bj_666 at gmx.net
Sun Nov 9 06:54:44 EST 2008


On Sun, 09 Nov 2008 11:17:28 +0000, Arnaud Delobelle wrote:

> greg <greg at cosc.canterbury.ac.nz> writes:
> 
>> Arnaud Delobelle wrote:
>>
>>> What's a variable reference?
>>
>> It's a reference to a variable. It's what gets passed behind the scenes
>> when you use a VAR parameter in Pascal, or a ByRef parameter in VB.
> 
> Do you mean you can't do the following C++ snippet in Pascal or VB?  I
> haven't used Pascal for more than 20 year and I have never used VB, so
> this is a real question.
> 
> foo(int &x) {
>     x = 7;
> }
> 
> struct bar {
>     int i;
>     float j;
> };
> 
> int main() {
>     int a[10];
>     bar b;
>     // What is passed to foo below is obviously not a 'variable
>     // reference' as the argument is not a variable.
>     foo(a[3]); // Now a[3] == 7
>     foo(b.i);  // Now b.i == 7
> }

Translated to Pascal:

Program Test;

Type
    Bar = Record
        i: Integer;
        j: Real;
    End;

Var a: Array[0..9] Of Integer;
    b: Bar;

Procedure Foo(Var x:Integer);
Begin
    x := 7;
End;

Begin
    Foo(a[3]);
    WriteLn(a[3]); {Prints 7.}
    Foo(b.i);
    WriteLn(b.i);  {Prints 7.}
End.

In "reality" I would not expect that anything is passed here but that the 
compiler inlines it as direct assignment.  Should read: Copying the bit 
pattern of a 7 into the fixed memory locations.  :-)

Ciao,
	Marc 'BlackJack' Rintsch



More information about the Python-list mailing list