Dalam bahasa pengaturcaraan C, *p mewakili nilai yang disimpan dalam penunjuk, dan p mewakili alamat nilai, yang dipanggil penunjuk.
const char* dan char const* menunjukkan bahawa penunjuk boleh menunjuk kepada aksara malar, dan nilai aksara yang ditunjuk oleh penunjuk tidak boleh diubah. Tetapi kita boleh menukar nilai penunjuk kerana ia bukan pemalar dan boleh menunjuk kepada watak pemalar yang lain.
char* const bermaksud penunjuk boleh menunjuk kepada aksara, dan nilai watak yang ditunjukkan oleh penunjuk boleh diubah. Tetapi kita tidak boleh mengubah nilai penunjuk kerana ia kini adalah pemalar dan tidak boleh menunjuk kepada watak lain.
const char* const bermaksud penunjuk boleh menunjuk kepada aksara malar, dan nilai aksara yang ditunjuk oleh penunjuk tidak boleh diubah. Kita juga tidak boleh menukar nilai penunjuk kerana ia kini pemalar dan tidak boleh menunjuk kepada watak pemalar lain.
Prinsip penamaan tatabahasa adalah dari kanan ke kiri.
// constant pointer to constant char const char * const // constant pointer to char char * const // pointer to constant char const char *
Nyahkomen kod yang salah dan lihat ralatnya.
Demonstrasi masa nyata
#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
Atas ialah kandungan terperinci Perbezaan antara const char*p, char*const p dan const char*const p dalam C. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!