Heim >Backend-Entwicklung >C++ >Unterschied zwischen const char*p, char*const p und const char*const p in C
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 *
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 = 'A'; // 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 '*q' //*q = 'B'; const char r = 'C'; //q can point to another const char q = &r; printf("%c</p><p>", *q); //Example: char* const char u = 'D'; char * const t = &u; //You can change the value *t = 'E'; printf("%c", *t); // Invalid asssignment // t cannot be changed // error: assignment of read-only variable 't' //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 '*s' // *s = 'D'; // Invalid asssignment // s cannot be changed // error: assignment of read-only variable 's' // s = &r; return 0; }
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!