2 Stimmen

Stimmt es, dass (const T v) in C niemals notwendig ist?

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?

4voto

AnT Punkte 300728

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.

1voto

Macmade Punkte 50817

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.com

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.

Powered by:

X