Heim  >  Artikel  >  Backend-Entwicklung  >  „const int“ vs. „int const“ in C und C: Sind sie wirklich gleich?

„const int“ vs. „int const“ in C und C: Sind sie wirklich gleich?

DDD
DDDOriginal
2024-10-27 02:06:30689Durchsuche

'const int' vs. 'int const' als Funktionsparameter in C und C

Bei der Deklaration von Funktionsparametern mit const ist es wichtig, zwischen 'const int' und 'const int' zu unterscheiden ' und 'int const'. Obwohl sie identisch erscheinen mögen, ändert die Reihenfolge der Modifikatoren die Interpretation der Deklaration.

'const int' deklariert eine Variable, die konstant ist (nicht geändert werden kann) und vom Typ int ist. Der Schwerpunkt liegt hier auf dem Qualifikationsmerkmal const, das auf die Variable angewendet wird.

'int const' hingegen deklariert a Variable vom Typ int und auch konstant. In diesem Fall ändert der const-Qualifizierer den Typ, nicht die Variable.

Sind diese beiden Funktionen also identisch?

<code class="c">int testfunc1 (const int a) { return a; }
int testfunc2 (int const a) { return a; }</code>

Ja, sie sind gleichwertig.Das Rückwärtslesen der Deklaration verdeutlicht dies.

Für 'const int':

  • „a“ ist eine Ganzzahl, die „konstant“ ist.

Für „int const“:

  • „a“ ist ein „ konstante Ganzzahl".

In beiden Fällen ist „a" sowohl eine Ganzzahl als auch eine Konstante.

Der Trick des Rückwärtslesens wird jedoch bei komplexen Deklarationen von unschätzbarem Wert:

<code class="c">// "s" is a pointer to a char that is constant
const char *s;

// "t" is a constant pointer to a char
char *const t = &c;

// The char in "s" is constant, so you can't modify it
*s = 'A'; // Can't do

// The pointer in "s" is not constant, so you can modify it
s++; // Can do

// The char in "t" is not constant, so you can modify it
*t = 'A'; // Can do

// The pointer in "t" is constant, so you can't modify it
t++; // Can't do</code>

Denken Sie daran, dass in C const-Datenelemente entweder in der Klassendeklaration oder im Konstruktor initialisiert werden können. Während in C const-Datenelemente als symbolische Konstanten betrachtet werden und in der Deklaration initialisiert werden müssen, sind sie #define sehr nahe.

Das obige ist der detaillierte Inhalt von„const int“ vs. „int const“ in C und C: Sind sie wirklich gleich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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