Heim > Backend-Entwicklung > C++ > Const-Platzierung in C: „const T' vs. „T const' – Welche sollte ich verwenden?

Const-Platzierung in C: „const T' vs. „T const' – Welche sollte ich verwenden?

Barbara Streisand
Freigeben: 2024-12-18 11:51:16
Original
939 Leute haben es durchsucht

Const Placement in C  : `const T` vs. `T const` – Which Should I Use?

Warum sind „const T“ und „T const“ beide gültig und welche sollten Sie verwenden?

In C kann das Schlüsselwort const verwendet werden, um Änderungen zu verhindern eines Objekts oder Zeigers. Überraschend für einige Entwickler ist, dass die Syntax variieren kann:

const Object* obj; // can't change data
Object* const obj; // can't change pointer
const Object* const obj; // can't change data or pointer
Object const *obj; // same as const Object* obj;
Nach dem Login kopieren

Es stellt sich die Frage, welche Syntax zuerst kam und warum beide korrekt sind.

Historischer Ursprung der Const-Platzierung

Die Sprachgrammatik für C und C ermöglicht einen Parser von links nach rechts, was bedeutet, dass der Compiler Eingaben von liest von links nach rechts und verarbeitet Token, sobald sie auf sie stoßen.

Wenn beim Parsen der Deklaration das -Token verbraucht wird, ändert sich der Deklarationsstatus in einen Zeigertyp. Wenn const zuerst auf trifft, gilt das Qualifikationsmerkmal für die Zeigerdeklaration. Wenn es vor dem * angetroffen wird, gilt das Qualifikationsmerkmal für die referenzierten Daten.

Da sich die semantische Bedeutung aufgrund der Position von const nicht ändert, werden beide Platzierungen akzeptiert.

Implikationen für Funktionszeiger

Eine ähnliche Situation ergibt sich bei Funktionen Zeiger:

  • void * function1(void) deklariert eine Funktion, um einen void-Zeiger zurückzugeben.
  • void (* function2)(void) deklariert einen Funktionszeiger auf eine Funktion, die void zurückgibt .

Wieder einmal ist die Interpretation des Links-nach-rechts-Parsers in der deutlich erkennbar Syntax.

Bevorzugte Verwendung

Letztendlich gibt es keine klare Präferenz für eine Syntax gegenüber der anderen. Die Auswahl sollte auf der Grundlage der Lesbarkeit und der Entwicklerpräferenzen getroffen werden.

Wenn jedoch Konsistenz mit der Syntax von Zeigern und Funktionszeigern gewünscht wird, ist die Verwendung von const links vom referenzierten Typ möglicherweise angemessener:

const Object* obj; // no change to obj pointer or value
Object const *obj; // no change to obj pointer or value
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonConst-Platzierung in C: „const T' vs. „T const' – Welche sollte ich verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage