Ergebnis 1 bis 4 von 4
  1. #1
    Bad Times Virus Avatar von DeXTer
    Registriert seit
    11.03.2007
    Beiträge
    627

    Standard Call by reference / Call by value

    Moin,

    bin gerade ziemlich durcheinander.
    Kann mir jemand sagen, ob bei der Variablenübergabe "call by reference" oder "call by value" der Aufruf ist, wo Werte in Prozeduren weiter verändert werden können, um den veränderten Wert später im Hauptprogramm wieder aufrufen zu können? Es geht um normales Pascal. (Ja wir arbeiten in der der Schule mit Turbo Pascal -.-).

    Bzw. wenn eine Prozedur so deklariert wird:
    Code:
    Procedure testproc(a:integer);
    , kann man später NICHT mit dem veränderten Wert weiterarbeiten, stimmts? Und bei
    Code:
     procedure testproc(var a:integer);
    könnte man es . Dann müsste das mit dem "var" ja Call by reference sein, oder?
    Geändert von DeXTer (14.06.2009 um 10:26 Uhr)
    currently programer in => VB.net






  2. #2
    this.hatcolor = gray Avatar von Ancient87
    Registriert seit
    29.03.2009
    Beiträge
    143

    Standard

    Also ich kenn die Pascal Syntax nicht aber:

    Call by reference sollte sein was du suchst denn wie der Name sagt by refernec eheisst du gibst der funktion eine referenze (pointer) zu dem Wert im Speicher welcher dann direkt manipuliert werden kann

    by value kopierst du nur den Wert und uebergibst ihn an die funktion diee Kopie ist nun unabhaengig vom original.

    btw sind das przedur deklarationen oder aufrufe - imho bestimmst du die art des calls beim Aufruf darauf basierend was du passed (value oder reference).

    Edit: Hab mir mal schnell die Pascal Syntax angesehen

    When parameters are declared as variable parameters, the procedure or function accesses immediatly the variable that the calling block passed in its parameter list. The procedure gets a pointer to the variable that was passed, and uses this pointer to access the variable’s value. From this, it follows that any changes made to the parameter, will propagate back to the calling block. This mechanism can be used to pass values back in procedures. Because of this, the calling block must pass a parameter of exactly the same type as the declared parameter’s type. If it does not, the compiler will generate an error.
    http://www.freepascal.org/docs-html/...4-13100011.4.2

    Also ja du hast teilweise recht, durch die Deklaration als variable (var) sagst du der prozedur dass es sich um einen Pointer handelt dementsprechend wird deine Prozedur dann ein call-by-reference. Aber "var" selber ist kein call by reference da es sich nur um eine Deklaration handelt, aber es legt sozusagen die Basis die Call-by reference ermoeglicht.

    MFG
    Geändert von Ancient87 (14.06.2009 um 10:36 Uhr)
    Knowledge is power - don't abuse it!

    Fuer niveauvolle Anfragen bin ich unter 139156343 erreichbar

  3. #3
    Bad Times Virus Avatar von DeXTer
    Registriert seit
    11.03.2007
    Beiträge
    627

    Standard

    Ok dann würde das, was ich geschrieben hab, passen.

    EDIT:

    Hab jetzt auch per google ne Seite gefunden, wo es nochmal wunderbar erklärt ist =)


    Hier die Seite für auch Interessierte:

    http://de.wikibooks.org/wiki/Program...und_Funktionen
    Geändert von DeXTer (14.06.2009 um 10:38 Uhr)
    currently programer in => VB.net






  4. #4
    I HACKED 127.0.0.1!!!!111 Avatar von Sn0opY
    Registriert seit
    13.09.2008
    Beiträge
    1.113

    Standard

    jup und auf wiki auch super erklärt hatte das in c++ ^^
    !gnudnewhcsrevtieZ enie saw sawos tseil ud LOL

    [s] NIX

    [b] Infos, Support, TuTs, Nützliches

    [Ich seh nur EMO GIRLS als AVATARE ?! wollt ihr die Weltherrschaft an euch reißen?]

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •