Arrayübergabe


  • Mod

    array schrieb:

    Hallo,
    kann mir jemand sagen, was der Unterschied ist, wenn ich ein Array so übergebe

    void foo(int arr[]);
    

    oder so

    void goo(int* arr);
    

    Danke
    array

    keiner. Beide Formen deklarieren dieselbe Funktion.



  • Kóyaánasqatsi schrieb:

    Das eine ist ein Array mit dynamischen Elementen und das Andere ist ein Zeiger (auf ein beliebig großes Array).

    ¨

    Ich glaube das ist falsch...



  • array schrieb:

    kann mir jemand sagen, was der Unterschied ist

    effektiv gar keiner. Innerhalb der Parametertypdeklarationen von Funktionen wird T[] automatisch als T* interpretiert. Es handelt sich also in beiden Fällen um Zeiger.

    Ich habe eine Zeit lang [] benutzt, um zu verdeutlichen, dass ggf mehr als nur ein "Element angefasst" wird, wobei ich * benutzt hatte, wenn es nur um ein Element ging. Ich halte mich da aber selbst nicht mehr immer dran und benutze oft auch * für den ersten Fall.

    Gruß,
    SP



  • effektiv gar keiner

    stimmt

    bei "*" also dem Zeiger gibst du der Funktion ja nur die Addresse des
    Arrays und bei dem anderen den "echten" Array mit variabler Größe



  • Samyboy schrieb:

    Kóyaánasqatsi schrieb:

    Das eine ist ein Array mit dynamischen Elementen und das Andere ist ein Zeiger (auf ein beliebig großes Array).

    ¨

    Ich glaube das ist falsch...

    Warum?



  • Kóyaánasqatsi schrieb:

    Samyboy schrieb:

    Kóyaánasqatsi schrieb:

    Das eine ist ein Array mit dynamischen Elementen und das Andere ist ein Zeiger (auf ein beliebig großes Array).

    Ich glaube das ist falsch...

    Warum?

    Weil es nichts mit dynamischen Elementen (was verstehst du überhaupt darunter? Meinst du dynamisch angelegte Arrays?) zu tun hat. Der Zeiger muss nicht einmal auf ein Array zeigen. Es wurde zudem auch schon gesagt, dass in der Parameterliste kein Unterschied besteht.



  • Nexus schrieb:

    Meinst du dynamisch angelegte Arrays?

    Nein. Ich habe auch nicht behauptet das es da einen Unterschied gibt.



  • Kóyaánasqatsi schrieb:

    Nein. Ich habe auch nicht behauptet das es da einen Unterschied gibt.

    Es ist mir zu blöd, mit dir die ganze Zeit über die Interpretation deiner Falschaussagen zu diskutieren. Du hast gesagt "das eine und das andere", und selbst dann sind noch beide Aussagen inkorrekt. Da gibts keinen Weg sich herauszureden.

    Stehe beim nächsten Mal bitte dazu, wenn du Fehler machst oder antworte gar nicht mehr. Ich stehe auch zu meinen Fehlern (im Übrigen versuche ich mich auch von Themen, in denen ich mich nicht auskenne, zu enthalten). Aber so eine Diskussion sorgt nur für zusätzliche Verwirrung und nützt absolut niemandem was.



  • Ok danke, ich habe es verstande.

    Liebe Grüße
    array



  • Wenn du so deine Arrays übergeben willst, solltest du am besten noch einen int übergeben, indem die anzahl der Elemente steht.
    Wenn du nur einen Pointer erhälst, weisst du nämlich noch nicht, wieviele Elemente dahinter noch dazu gehören.


Anmelden zum Antworten