Rumah >pembangunan bahagian belakang >C++ >Tatasusunan Char lwn. Penunjuk Char dalam C: Bilakah Saya Harus Menggunakan `char a[]` lwn. `char *p` untuk Rentetan?
Array lwn. Penunjuk dalam Pengisytiharan Rentetan: char a[] lwn. char *p
Dalam pengaturcaraan C, terdapat perbezaan antara pengisytiharan tatasusunan aksara dan penunjuk aksara apabila bekerja dengan rentetan. Sintaks yang anda nyatakan, "char a[] = string;" dan "char *p = string;" menunjukkan perbezaan ini.
Versi Tatasusunan: char a[] = rentetan
Sintaks ini mengisytiharkan tatasusunan aksara, 'a', yang saiznya ditentukan secara automatik untuk menampung rentetan literal "rentetan". Tatasusunan dimulakan dengan aksara rentetan, termasuk null-terminator. Saiz tatasusunan diketahui pada masa penyusunan, membolehkan anda menggunakan operator 'sizeof' untuk menentukan panjangnya. Anda boleh mengubah suai aksara dalam tatasusunan nanti.
Versi Penunjuk: char *p = rentetan
Sintaks ini mengisytiharkan penunjuk 'p' yang menghala ke rentetan literal "rentetan". Ia adalah pendekatan yang lebih pantas daripada versi tatasusunan, tetapi mengubah suai aksara yang ditunjuk oleh 'p' adalah dilarang kerana ia berada dalam bahagian ingatan baca sahaja. Mengubah suai literal rentetan tersebut membawa kepada gelagat yang tidak ditentukan.
Pemberhentian dan Amalan Terbaik dalam C
Dalam C , penggunaan literal rentetan tanpa kata kunci 'const' telah ditamatkan. Pengisytiharan pilihan untuk versi penunjuk ialah:
const char *p = "string";
Selain itu, elakkan menggunakan 'sizeof' untuk menentukan saiz rentetan yang ditunjuk oleh penunjuk. Sebaliknya, gunakan fungsi 'strlen()'.
Memilih Antara Tatasusunan dan Penunjuk
Pilihan antara menggunakan tatasusunan atau penuding bergantung pada senario anda:
Nota untuk C
Pembezaan ini khusus untuk C dan tidak terpakai kepada C . Dalam C, literal rentetan boleh digunakan tanpa 'const', tetapi mengubah suainya kekal sebagai tingkah laku yang tidak ditentukan. Dalam C , penggunaan ini adalah haram.
Atas ialah kandungan terperinci Tatasusunan Char lwn. Penunjuk Char dalam C: Bilakah Saya Harus Menggunakan `char a[]` lwn. `char *p` untuk Rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!