EBSILON®Professional Online Dokumentation
EbsScript / EbsScript Funktionen / Pointerfunktionen
In diesem Thema
    Pointerfunktionen
    In diesem Thema

    Pointerfunktionen


    Diese Funktionen werden verwendet, um in EbsScript Pointeroperationen durchführen zu können, wie sie z. B. in der Programmiersprache C üblich sind.

    Die Deklaration eines Pointers (einer Referenz) erfolgt durch "^" vor dem Typnamen.

    Auf die Adresse einer Variablen wird durch ein "&" vor dem Variablennamen zugegriffen (Adressoperator).

    Auf den Inhalt der Adresse, auf die der Pointer verweist (also auf den dort abgelegten Wert), kann durch ein der Pointervariablen nachgestelltes "^" zugegriffen werden (Dereferenzierung)

    Pointer werden im Deutschen auch als Zeiger bezeichnet. Eine Variable vom Typ pointer enthält die Speicheradresse einer Variablen eines bestimmten Typs (real, integer...).

     

    Einfaches Beispiel:

    var realnumber : real;
        pointertoreal : ^real;
        pointertype : pointer;

    begin

        realnumber := 7.0; 
        pointertoreal := &realnumber; 
        println ("using ^ on pointer: ", pointertoreal^ * pointertoreal^);
        pointertype := pointertoreal;
        pointertoreal^ := 8;
        println ("Square: ", realnumber * realnumber);
    end.

    Ausgabe:
    using ^ on pointer: 49.0
    Square: 64.0

    Name

    Zweck

    Argumente

    Rückgabewert

    Beispiel

    copymem

    kopiert einen Speicherbereich.

    Anzahl = Anzahl elementare Datentypen

    1: POINTER: Ziel
    2: POINTER: Quelle
    3: INTEGER: Anzahl

    kein

     

    dispose

    gibt den Speicherplatz wieder frei, der für das Objekt durch die Funktion new allokiert wurde, auf das der Pointer verweist

    1: POINTER:

    kein

    var
    pi:^integer; 

    begin
    new(pi);
    pi^:=5;
    print (pi^);
    dispose(pi);

    end;

    freemem

    gibt den Speicherplatz wieder frei, der für das Objekt durch die Funktion getmem allokiert wurde, auf das der Pointer verweist

    1: POINTER:

    kein

     

    getmem

    legt einen neuen Pointer an und allokiert den erforderlichen Speicherplatz für das Objekt, auf das der Pointer verweist.

    Anzahl > 1: Array von Elementen

    1: POINTER:

    2: INTEGER: Anzahl

    kein

     

    new

    legt einen neuen Pointer an und allokiert den erforderlichen Speicherplatz für das Objekt, auf das der Pointer verweist.

    Anzahl > 1: Array von Elementen

    1: POINTER:

    2: INTEGER: Anzahl

    kein

    var
    pi:^integer;

    begin
    new(pi);
    pi^:=5;
    print (pi^);
    dispose(pi);

    end;

    sizeOf

    Liefert die Länge eines Objektes bzw. einer Variablen

    Objekttyp bzw. Variable:

    Integer 

    var i: integer;
            arr:array[1..10] of string; type rec_t = record
            i,j:integer;
            r:real;
            end;
    var r:rec_t;
    begin
            println(sizeof(i));
            println(sizeof(arr));
            println(sizeof(r));
            println(sizeof(array [2..5]  
                        of string));
            println(sizeof(array of  
                        string)); 
    end.
    // Ausgabe

    10
    3
    4
    1

    addr

    Liefert die Adresse des Arguments zurück.
    Liefert das gleiche wie der Addressoperator &

    Variable: 

     Integer

    var i: integer;
    begin
             println(addr(i));
             println(&i);
    end.
    // mögliche Ausgabe 0x00000a80
    0x00000a80