Code: Alles auswählen
add( int left, int right );
Code: Alles auswählen
int add()
{
int left;
int right;
}
Code: Alles auswählen
int left;
int right;
int add();
{
return left+right;
}
int main
{
summe=add();
return 0;
}
Code: Alles auswählen
add( int left, int right );
Code: Alles auswählen
int add()
{
int left;
int right;
}
Code: Alles auswählen
int left;
int right;
int add();
{
return left+right;
}
int main
{
summe=add();
return 0;
}
Das ist eine Funktion, der Du keine Argumente übergeben kannst, die aber zwei lokale Variablen besitzt. Ein Argument ist nichts anderes als eine lokale Variable, ein Argument wird aber durch den Funktionsaufruf von außen mit einem Wert belegt - eine lokale Variable musst Du selbst mit einem Wert belegen. Vor allem aber kann die rufende Funktion den Wert einer lokalen Variable nicht beeinflussen.AlexImperator hat geschrieben:wenn ich int den prototypdeklariere was macht es für einen unterschied wenn man left und right in der kalmmer deklatiert? und nichtCode: Alles auswählen
add( int left, int right );
Code: Alles auswählen
int add() { int left; int right; }
Hier hast Du zwei globale Variablen. An diese Variablen darf jeder ran und es gibt sie nur ein einziges Mal. Wenn die Funktion add sich selbst aufruft (das nennt sich Rekursion), ist sie wieder an genau diese beiden Variablen gebunden. Rekursion ist mit globalen Variablen also recht unhandlich.AlexImperator hat geschrieben: oder
Code: Alles auswählen
int left; int right; int add(); { return left+right; } int main { summe=add(); return 0; }
Code: Alles auswählen
add( 1, 2 );
Eben nicht. Als Parameter findet ein Austausch zwischen der rufenden und der gerufenen Funktion statt. Keine anderen Funktionen haben Einfluss auf Parameter. Bei globalen Variablen haben alle Zugriff, bei lokalen nur die Funktion in der die Variablen definiert sind (außer es werde Referenzen auf die Variablen weitergegeben).AlexImperator hat geschrieben:wahrscheinlich ne dumme frage aber ich hab nicht ganz verstanden was bei add( int left, int right ); passiert... ist das eine art speicher auf den andere funktieonen wie main zugreifen können?
Dein Compiler unterscheidet Funktionen anhand des Namens und der zu übergebenden Parameter.wenn ich int den prototypdeklariere was macht es für einen unterschied wenn man left und right in der kalmmer deklatiert?Code: Alles auswählen
add( int left, int right );
Code: Alles auswählen
int add(int left, int right); //add(int, int)
int add(float left, float right);//Das ist ok
int add(int right, int left); //das ist nicht oK wegen add(int, int)
Code: Alles auswählen
int add(int left, int right);
Code: Alles auswählen
int add(int, int);
Die Parameter in den Klammern sind dafür gedacht, dass sie beim Aufruf der Funktion vom Aufrufer übergeben werden müssen:und nichtCode: Alles auswählen
int add() { int left; int right; }
Code: Alles auswählen
int sum = add(2, 5);