Heim >Backend-Entwicklung >C++ >Unterschied zwischen const char*p, char*const p und const char*const p in C

Unterschied zwischen const char*p, char*const p und const char*const p in C

PHPz
PHPznach vorne
2023-09-08 19:25:03782Durchsuche

C中const char*p、char*const p和const char*const p之间的差异

Zeiger

In der Programmiersprache C stellt *p den im Zeiger gespeicherten Wert dar und p stellt die Adresse des Werts dar, der als Zeiger bezeichnet wird.

const char* und char const* geben an, dass der Zeiger auf ein konstantes Zeichen zeigen kann und der Wert des Zeichens, auf das der Zeiger zeigt, nicht geändert werden kann. Wir können den Wert des Zeigers jedoch ändern, da er keine Konstante ist und auf ein anderes konstantes Zeichen verweisen kann.

char* const bedeutet, dass der Zeiger auf ein Zeichen zeigen kann und der Wert des Zeichens, auf das der Zeiger zeigt, geändert werden kann. Wir können den Wert des Zeigers jedoch nicht ändern, da er jetzt eine Konstante ist und nicht auf ein anderes Zeichen zeigen kann.

const char* const bedeutet, dass der Zeiger auf ein konstantes Zeichen zeigen kann und der Wert des Zeichens, auf das der Zeiger zeigt, nicht geändert werden kann. Wir können den Wert des Zeigers auch nicht ändern, da er jetzt eine Konstante ist und nicht auf ein anderes konstantes Zeichen zeigen kann.

Das Prinzip der Benennung der Grammatik erfolgt von rechts nach links.

// constant pointer to constant char
const char * const
// constant pointer to char
char * const
// pointer to constant char
const char *

Beispiel (C)

Kommentieren Sie den falschen Code aus und sehen Sie sich den Fehler an.

Echtzeit-Demonstration

#include <stdio.h>
int main() {
   //Example: char const*
   //Note: char const* is same as const char*
   const char p = &#39;A&#39;;
   // q is a pointer to const char
   char const* q = &p;
   //Invalid asssignment
   // value of p cannot be changed
   // error: assignment of read-only location &#39;*q&#39;
   //*q = &#39;B&#39;;
   const char r = &#39;C&#39;;
   //q can point to another const char
   q = &r;
   printf("%c</p><p>", *q);
   //Example: char* const
   char u = &#39;D&#39;;
   char * const t = &u;
   //You can change the value
   *t = &#39;E&#39;;
   printf("%c", *t);
   // Invalid asssignment
   // t cannot be changed
   // error: assignment of read-only variable &#39;t&#39;
   //t = &r;
   //Example: char const* const
   char const* const s = &p;
   // Invalid asssignment
   // value of s cannot be changed
   // error: assignment of read-only location &#39;*s&#39;
   // *s = &#39;D&#39;;
   // Invalid asssignment
   // s cannot be changed
   // error: assignment of read-only variable &#39;s&#39;
   // s = &r;
   return 0;
}

Ausgabe

C
E

Das obige ist der detaillierte Inhalt vonUnterschied zwischen const char*p, char*const p und const char*const p in C. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen