PHP-Code:
char * stab(double hm);//oben einmal die Fkt definieren
void _main(void)
{
.
.
.
printf("\n->%s",stab(hm)); //Aufruf der Fkt. in _main()
.
.
.
}
char * stab(double hm) //die Funktion
{
char *erg; /* static steht für Allozierung am Heap, sonst vom Stack.
static belässt die Variable zwischen zwei Funktionsaufrufen von stab(), während der Speicherplatz von nicht static Variablen per Assemblerbefehl ("unlink") wieder freigegeben wird ! */
erg=(char *)"Fehler"; //wenn ich char erg[20] schreib gehts komischerweise garnicht(Compile Error)
if(hm>0.0)
erg=(char *)"stabil";
else if(hm==0.0)
erg=(char *)"indifferent";
else if(hm<0.0)
erg=(char *)"labil";
return erg;
}
zeiger="Literal"; bedeutet: Weise zeiger die Anfangsadresse des Charfeldes "..." - in diesem Fall ist "Literal" gemeint - zu.
char *erg1; ist eine Adressvariable
char erg2[20]; ist ein Characterfeld mit 19+1 (Nullterminierter Sring) oder 20 Elementen.
erg1 ... nimmt Adressen durch eine Zuweisung - also durch den '=' Operator - an.
erg2 ... ist ein Label (Anfangsadresse eines Arrays = Feld = eindimensionale Matrix).
erg2="..."; geht nicht, da erg2 kein L-Wert ist. erg2 kann nicht neu gesetzt werden, da es (=eben das gegenständliche Label) auf eine unveränderliche Speicherplatzposition zeigt.
Ein L-Wert ist eine Variable oder ein Zeiger ...
mfg Kikakater