Hallo Zusammen,
ich habe wieder einmal eine Frage und zwar folgendes:
Call-by-Value bei der Parameterübergabe:
Im Prinzip werden bei der Übergabe von Parametern an Funktionen Kopien erstellt. Ein Nachteil ist, dass nur ein Wert zurückgegeben werden kann. Das zweite Problem dürftre wohl sein, dass z.B. bei der Übergabe von ganzen Strukturen als Parameter der Stack zusätzlich "belastet" wird.
Call-by-Reference
Bei dieser Parameterübergabe wird nur die Adresse der Variablen als Argument zu übergeben. Das heißt, mein Zeiger als Parameter der Funktion bekommt durch einen Funktionsaufruf foo(int &radius) eben die Adresse der Variablen "radius" zugewiesen. Aber wie genau? Wird diese Adresse wie bei "Call by Value" auf dem Stack kopiert bzw. eine Kopie erstellt? Falls ja, nimmt diese Kopie genau so viel Speicher ein wie eine Variable? Es ist ja im Prinzip nur eine Adresse. Andererseits, wenn es eine Kopie ist, wie greift dann der Zeiger direkt auf den Wert zu. Ich bin verwirrt, was genau passiert ...
Und wie sieht es dann bei der Übergabe von Strukturen als Parameter einer Funktion aus? Werden dann alle Adressen der Strukturelemente übergeben? Würde das dann nicht genau so den Stack belasten?
Aber so viel ich verstanden habe, zeigt ein Zeiger immer nur auf die Anfangsadresse. Also gehe ich momentan davon aus, dass durch den Aufruf foo(&structurxyz) nur die Anfangsadresse übergeben wird oder? Also spare ich dann auch Speicherplatz bei großen Objekten ...
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »TigerClaw25« (08.07.2017, 18:55)