Zum Beispiel:
void func(const int i);
Hier ist die const
ist unnötig, da alle Parameter als Wert übergeben werden (einschließlich Zeiger).
Ist das wahr?
Zum Beispiel:
void func(const int i);
Hier ist die const
ist unnötig, da alle Parameter als Wert übergeben werden (einschließlich Zeiger).
Ist das wahr?
Alle Parameter in C werden tatsächlich als Wert übergeben, was bedeutet, dass sich das tatsächliche Argument nicht ändert, unabhängig davon, ob Sie die const
oder nicht.
Das bedeutet jedoch nicht, dass const
hier "nie notwendig" ist. Ob es notwendig oder unnötig ist, hängt davon ab, was Sie erreichen wollen.
Wenn Sie verhindern wollen, dass der Parameter innerhalb der Funktion verändert wird, dann muss die const
est natürlich notwendig.
Es gibt eine ziemlich populäre (und ziemlich vernünftige) Kodierungsrichtlinie, die besagt, dass Funktionsparameter niemals innerhalb der Funktion geändert werden sollten, d.h. dass zu jedem Zeitpunkt der Funktionsausführung alle Parameter ihre ursprünglichen Werte beibehalten müssen. Nach dieser Richtlinie wäre es eigentlich völlig sinnvoll, wenn immer das einschließen const
en tous Parameter-Deklarationen.
Const wird nur vom Precompiler verwendet, um auf Fehler hinzuweisen...
Beachten Sie, dass dies durchaus zulässig ist:
void foo( const char * bar )
{
char * baz = ( char * )bar;
baz++;
}
Es ist also nie notwendig, aber es macht den Code besser lesbar und informiert Sie darüber, dass sich der Zeiger nie ändern sollte...
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.