Adresse einer Variablen in Funktionsargument zurückgeben

Gast #3971557
Lesenswert?

Hallo,

wie kann ich in C in einem Funktionsargument eie Adresse zurückgeben.

Im Modul a ist ein Buffer definiert.
Modul a hat eine Funktion die der aufrufenden Funktion in Modul b also 
die Adresse des Buffers in Modul a zurückgeben soll.

void Funktion(Adresse);

Also im Argument soll die Adresse zurückgemeldet werden und nicht als 
Rückgabe der Funktion wie ich das bereits kenne. U8 *Funktion(void);
Persönliche Seite #3971565
Lesenswert?

Diese Art von Werteübergabe nennt man "call by reference", hier ist als 
Funktionsargument ein Pointer auf den gewünschten Datentyp zu übergeben.

Beim Aufruf der Funktion muss als Pointer die Adresse des Objekts 
übergeben werden, in das das Ergebnis geschrieben werden soll.

Hier ist der Adressoperator hilfreich.

Soll beispielsweise ein int auf diese Art und Weise transportiert 
werden, ist ein Pointer auf int zu übergeben.

In der Funktion wiederum ist der übergebene Pointer zu dereferenzieren.

1
void funktion(int* i)
2
{
3
  *i = 1234;
4
}
5

6
...
7

8
int a;
9

10
funktion(&a);

Dieses grundlegende Prinzip wird immer verwendet, egal, um welchen 
Datentyp es sich handelt. Ob der Datentyp nun int, char oder auch ein 
Pointer ist, die Vorgehensweise ist immer die selbe.
#3971570
Lesenswert?

Nachtrag:
Man sollte aber aufpassen, dass die Adresse nicht auf Speicher im Stack 
zeigt der nach dem Verlassen der Funktion wieder freigegeben wird.


Auch Gastlich schrieb:
> Das ganze passt eigentlich am besten ins GCC subforum.
Sicher?

>> Forum: GCC
>> Fragen zu den GNU-Toolchains für AVR-, ARM- und MSP430-Mikrocontroller,
>> AVR-GCC, MSPGCC, WinAVR, WinARM, ...
für mich sieht das eher wie eine generelle Frage zu 'C' aus, die mit 
einer GNU-Toolchain nichts zu tun hat.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren