Heute habe ich über reine Funktion gelesen und war verwirrt mit ihrer Verwendung:
Eine Funktion gilt als rein, wenn sie denselben Wertesatz für denselben Eingangssatz zurückgibt und keine beobachtbaren Nebenwirkungen aufweist.
zB strlen()ist eine reine Funktion, während rand()es eine unreine ist.
__attribute__ ((pure)) int fun(int i)
{
return i*i;
}
int main()
{
int i=10;
printf("%d",fun(i));//outputs 100
return 0;
}
Das obige Programm verhält sich genauso wie ohne pureDeklaration.
Was sind die Vorteile der Deklaration einer Funktion als pure[wenn sich die Ausgabe nicht ändert]?
printfzum Beispiel würde sie sich qualifizieren (zweimal mit denselben Argumenten aufzurufen, ergibt denselben Rückgabewert), aber sie ist nicht rein.
...and no side-effects...Teil.