Rumah >pembangunan bahagian belakang >C++ >Perbezaan antara const char*p, char*const p dan const char*const p dalam C

Perbezaan antara const char*p, char*const p dan const char*const p dalam C

PHPz
PHPzke hadapan
2023-09-08 19:25:03807semak imbas

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

Penunjuk

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 *

Contoh (C)

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 = &#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;
}

Output

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!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam