Ich habe kürzlich über die Verwendung von const
Schlüsselwort als Funktion Argumente in C und die Art zu verwenden, die in When and for what purposes should the const
keyword be used in C for variables erwähnt wurde und als richtige Antwort akzeptiert wurde. In diesem Beitrag erwähnt ein Punkt, dassWarum ist const in Funktionsdeklarationen in Headerdateien für Parameter, die als Wert übergeben werden, nicht erforderlich?
nie
const
in einem Funktionsprototyp für einen Parameter von Wert übergeben verwenden. Es hat keine Bedeutung und ist daher nur "Lärm".
habe ich diese Art und Weise und es funktioniert für mich, aber ich bin nicht sicher, warum das eine ist Rauschen für Parameter Wert übergeben und noch kein Lärm für die durch Verweis übergebenen Parameter (treffender die Zeigerwerte in C wie es gibt kein Konzept von pass by value
und pass by reference
in C). Also, durch diese Erklärung, wenn ich einen Zeiger als Funktion Argument übergeben und ein const
Schlüsselwort verwenden; Ich muss dies sowohl für die Deklaration in der Header-Datei und die Definition in der C-Datei tun, aber ich brauche nicht das Schlüsselwort const
für ein Nicht-Zeiger-Argument in der Deklaration (Header-Datei) und verwenden Sie es nur beim Definieren der Funktion in die C-Datei.
Irgendwelche Erklärungen?
Da der Wert überschritten wird, hat das Ändern des Werts keine tatsächliche Auswirkung. Es const zu nennen, macht nicht viel. –
Es spielt für den aufrufenden Code keine Rolle, ob 'double sqrt (double)' oder 'double sqrt (const double)' verwendet wird. Wenn der Benutzer folgendes hat: 'double x = 3.14; double y = sqrt (x); ', die Funktion' sqrt() 'kann die Variable' x' nicht ändern, unabhängig vom Vorhandensein oder Nichtvorhandensein von 'const' (und ein' const' im Rückgabetyp wäre sinnlos) . Es ist jedoch wichtig mit Zeigern.Wenn Sie 'char * fgets (const char * buffer, size_t buflen, FILE * fp);' haben, verspricht es, die Daten nicht zu ändern, auf die 'buffer' zeigt, wodurch es als Eingabefunktion impotent wird - es muss geändert werden der Puffer. –