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

PHPz
Lepaskan: 2023-09-08 19:25:03
ke hadapan
601 orang telah melayarinya

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 *
Salin selepas log masuk

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;
}
Salin selepas log masuk

Output

C
E
Salin selepas log masuk

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!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!