Rumah >pembangunan bahagian belakang >C++ >Apakah Perbezaan antara `char*` dan `char[]` dalam C?

Apakah Perbezaan antara `char*` dan `char[]` dalam C?

Barbara Streisand
Barbara Streisandasal
2024-10-27 04:47:02750semak imbas

 What's the Difference between `char*` and `char[]` in C?

Memahami Perbezaan antara char* dan char[]

Apabila berurusan dengan tatasusunan aksara dan penunjuk dalam pengaturcaraan C, adalah penting untuk memahami perbezaan asas antara char str[] = "Ujian"; dan char *str = "Ujian";.

char str[] = "Ujian";

Dalam pengisytiharan ini, str mewakili tatasusunan aksara (aksara) dengan saiz tetap, dimulakan dengan kandungan rentetan "Ujian". Tatasusunan memiliki memorinya sendiri dan berbeza daripada literal rentetan asal. Sebarang pengubahsuaian pada str akan mengubah salinan tempatan data, bukan rentetan "Ujian" itu sendiri.

char *str = "Ujian";

Di sini, str ialah penunjuk, khususnya penunjuk kepada aksara pertama rentetan literal "Ujian". Penunjuk menyimpan alamat memori aksara ini. Walau bagaimanapun, adalah penting untuk diingat bahawa str tidak memiliki memori tempat rentetan disimpan; sebaliknya, ia menunjuk kepada rentetan baca sahaja (const) literal. Akibatnya, sebarang percubaan untuk menukar rentetan yang ditunjuk oleh str akan menghasilkan gelagat yang tidak ditentukan.

Perbezaan Utama:

  1. Pemilikan: tatasusunan char[] memiliki data mereka, manakala char* penunjuk penunjuk data rujukan yang dimiliki oleh entiti lain.
  2. Kebolehubahsuaian: tatasusunan char[] boleh diubah suai (mis., nilai baharu yang diberikan), tetapi char * penunjuk menunjuk kepada literal tidak boleh ubah dan menukar data yang mereka tunjuk adalah tidak ditentukan.
  3. Peruntukan Memori: tatasusunan char[] memperuntukkan memori setempat pada tindanan, manakala penunjuk char* boleh merujuk kepada memori di mana-mana dalam atur cara, termasuk literal dan memori lain yang diperuntukkan.
  4. Penentuan Saiz: Saiz tatasusunan char[] ditetapkan pada masa penyusunan, manakala saiz data ditunjuk oleh penunjuk char* ditentukan oleh data itu sendiri atau oleh peruntukan memori luaran.

Atas ialah kandungan terperinci Apakah Perbezaan antara `char*` dan `char[]` dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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