Frage von Nintendo200, 62

Frage zu Funktionen in C?

Hallo, Ich bin gerade beim auffrischen meiner Programmierkenntnisse und habe dafür ein kleines Programm mit einer Funktion geschrieben. Dabei habe ich mich gefragt, ob ich in der Funktion die gleiche Variable nutzen kann, wie ich ihr übergebe. Ich weiß, dass dies normalerweise nicht sinnvoll ist, da ich aber nur ein kleines Programm habe würde ich mir so weitere Variablendeklarationen sparen. Wie gesag, es geht mir nur darum wie das machbar ist und nicht ob es sinnvoll ist.

Hier noch ein Beispiel:

int     addieren(summand1 , summand2)
{
        return summand1+summand2;
}

int main()
{
        int summand1, summand2;
        addieren(summand1,summand2);
}
Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Willibergi, 31

Ja, das ist möglich.

Parametervariablen haben rein gar nichts mit lokalen Variablen in der main()-Methode zu tun.

Sie können nach Lust in Laune benannt werden.

Wie ich lese, möchtest du dir weitere Variablendeklarationen sparen.

Das ist so nicht möglich.

Es werden 2 Mal 2 Variablen angelegt - die Parametervariablen haben hingegen einen anderen Gültigkeitsbereich.

Sparen kann man sich also mit der Benennung der Variablen nichts. ^^

Ich hoffe, ich konnte dir helfen; wenn du noch Fragen hast, kommentiere einfach.

LG Willibergi

Antwort
von JutenMorgen, 22

Deine Frage ist wirklich unglücklich gestellt, denn ja du kannst die gleiche Variable nutzen und zwar über Call by Reference und das ist mit nichten "nicht sinnvoll".

Das ganze würde dann ganz einfach so ausschauen:

int     addieren(int &summand1 , int &summand2)
{
return summand1+summand2;
}

Allerdings bin ich mir ziemlich sicher, dass du das nicht gemeint hast und deshalb meinte ich auch, dass deine Frage unglücklich formuliert ist.

Das was du glaube ich meinst sind globale Variablen, dafür werde ich hier aber kein Beispiel anführen da dies tatsächlich komplett sinnlos ist, da es bei kleinen Programmen auf eine Variable mehr oder weniger nicht ankommt und bei großen nur zu Fehlern führt. Also wie gesagt unnötig...

So wie ich es oben allerdings geschrieben habe werden in deinem Programm nur 2 statt vier Integern angelegt.

Liebe Grüße, JutenMorgen!

Antwort
von Omnivore10, 22

na klar geht das. Das sind nur Bezeichner. Wie die heißen ist völlig egal. Intern wird nämlich erst zwei mal ge"PUSH"t, dann ge"CALL"t, dann ge"POP"t und dann "RET"urnt. die Bezeichner innerhalb der Funktion sind immer etwas anderes.

Kommentar von TeeTier ,

Wenn du jetzt noch geschrieben hättest, dass die Werte auch geADDed werden, dann hätten wir schon fast ein komplettes Disassemblat der Funktion zusammen. ;)

Kommentar von Omnivore10 ,

hehe stimmt :) Aber MOVen nicht vergessen ^^

Keine passende Antwort gefunden?

Fragen Sie die Community