title image


Smiley Parameter, lokale und globale Variablen
Als Anfänger tappt man ja bei C in so manches Fettnäpfchen rein.

Es wäre schön, wenn ich jetzt auch noch halbwegs begreife, warum

ich das so nicht machen darf. Es werden zuerst globale Variablen

definiert:



char var1,var2,var3;



Sodann erfolgt eine Funktion nach der "prototyped" Syntax,

mit Returnwert und Übergabeparameter par1



char funktion (char par1)

{ /*macht sonst noch irgendwas */

return par1+var2;

}



und ein Aufruf dieser Funktion mit



if (funktion(var1)==0)

{

; /*mach irgendwas anderes */

}



Jetzt habe ich aus Versehen für den Übergabeparameter par1 einen Namen ausgewählt, den es schon als globale Variable gibt:



char funktion (char var3)

{ /*macht sonst noch irgendwas */

return var3+var2;

}



Der Compiler (Cross) erzeugt keine Fehlermeldung, aber einen Code der überhaupt gar nicht funktioniert und obendrein Stackfehler erzeugt. Im Zweifelsfall könnte ja fälschlicherweise die globale Variable var3 anstelle der im Aufruf übergebenen var1 benutzt werden, stattdessen passiert aber was völlig Unverständliches. Wie ist das zu erklären?





geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: