Funktionen mit Zeiger als Rückgabewert
-
Kommt im Endeffekt aufs gleiche raus in seinem Beispiel.
-
yo das mit dem freigegebenen speicher weiss ich schon, das problem ist, ich schnall nicht wie die funktionen einen pointer zurückliefern sry, auc wenn es sicher total einfach zu verstehen is...
die funktion liefert ja eigentlich die adresse zurück wieso lautet die funktions deklaration dann nich, oder bedeutet der dereferenzierungsoperator nur, dass der rückgabewert nur und nur an einen pointer (von mir aus in der main() funkt. definiert) übergeben werden kann. die funktion aber selbst eben keinen pointer übergibt, sondern den wert an einen pointer.
thx & mfg!!!

-
Ich versteh den Satz nicht, kannst du mal Satzzeichen einbauen?
-
ja in ordnung
also die funktion gibt seinen wert nur an einen pointer weiter, das bedeutet ja auch dass sie die adresse zurückliefert denn *ptr1 = *ptr2 geht ja nich, da wir jetzt davon ausgehen, dass ptr1 nicht definiert wurde. ptr2 stellt hier den rückgabewert vor. damit es läuft, kann der rück.wert dann nur die adresse sein, wie ich vorhin schon sagte also &ptr2 oder ptr2.
also müsste man doch dann eigentlich sagene, die funktion würde eine adresse zurückliefern jund keinen pointer sonder die adresse an einen pointer.
thx & mfg!!
-
ein pointer _ist_ eine adresse
-
ach ich dachte ein pointer ist ne variable, die ne adresse einer anderen enthält...
Beweis:Zeiger sind im Prinzip nichts anderes als ganz normale Variablen, die statt Datenobjekten wie Zahlen, Zeichen oder Strukturen eben Adressen eines bestimmten Speicherbereichs beinhalten.

ausschnitt aus dem buch c von a bis z,
bei www.galileocomputing.de gibts das teil umsonst (als e-book)!!
ist die sonstige interpretation von mir richtig oder nich?thx & mfg!!

-
Ok, so gesehn ja. Eion integer ist eine Variable die eine Zahl enthält.
Trotzdem sag ich integer ist eine Zahl.
Ansonsten schliess ich mich Thomas (: an, ich versteh nicht was du meinst.
-
wenn du den vorletzten post von mir meinst, will ich kurz gesagt einfach nur sagen, dass dei funktion die so deklariert ist, einen zeiger zurückzugeben, eigentlich nur adresse einer variablen zurückliefert.
das ist ja so richtig oder?
thx &mfg!!!

-
Eine Funktion die so deklariert ist gibt einen Zeiger auf ein Integer (oder mehrere hintereinanderliegender Integer) zurück - und das _ist_ die Adresse eines Integer (oder mehrerer)...
-
Die Funktion liefert eine Adresse zurück, die Du in einer Pointer Variablen speichern kannst.
int* getAdress( int value ) { return &value; } int* pointer; pointer = getValue( 17 );Oder du gibst die Zahl zurück und weist sie dem Pointer zu
int getValue( int value ) { return value; } int* pointer; *pointer = getValue( 17 ); //oder pointer = &getValue( 42 );Bitte nicht nach dem Sinn des Beispiels fragen
Aber das hier:
int* foo(int value) { int arr[2]; arr[0]=value; arr[1]=-value; return arr; }Gibt dir gar nichts, weil arr beim Verlassen des Funktionsblocks zerstört wird.