Dalam C , kata kunci const boleh digunakan untuk mengelakkan pengubahsuaian sesuatu objek atau penunjuk. Mengejutkan bagi sesetengah pembangun, sintaks boleh berbeza-beza:
const Object* obj; // can't change data Object* const obj; // can't change pointer const Object* const obj; // can't change data or pointer Object const *obj; // same as const Object* obj;
Timbul persoalan tentang sintaks mana yang didahulukan dan mengapa kedua-duanya betul.
Asal Sejarah Penempatan Konst
Tatabahasa bahasa untuk C dan C membenarkan penghuraian kiri-ke-kanan, yang bermaksud pengkompil membaca input dari kiri ke kanan dan memproses token apabila ia bertemu dengannya.
Dalam menghuraikan pengisytiharan, apabila token digunakan, keadaan pengisytiharan berubah kepada jenis penuding. Jika const menemui dahulu, kelayakan digunakan pada pengisytiharan penunjuk; jika ia menemuinya sebelum *, penentu kelayakan digunakan pada data yang dirujuk.
Memandangkan makna semantik tidak berubah disebabkan oleh kedudukan const, kedua-dua peletakan diterima.
Implikasi untuk Penunjuk Fungsi
Situasi yang sama timbul dengan fungsi penunjuk:
Sekali lagi, tafsiran penghurai kiri ke kanan jelas dalam sintaks.
Penggunaan Pilihan
Akhirnya, tiada keutamaan yang jelas untuk satu sintaks berbanding yang lain. Pilihan harus dibuat berdasarkan kebolehbacaan dan pilihan pembangun.
Walau bagaimanapun, jika konsistensi dengan sintaks penunjuk dan penunjuk fungsi dikehendaki, menggunakan const di sebelah kiri jenis yang dirujuk mungkin lebih sesuai:
const Object* obj; // no change to obj pointer or value Object const *obj; // no change to obj pointer or value
Atas ialah kandungan terperinci Peletakan Const dalam C : `const T` lwn. `T const` – Mana Yang Perlu Saya Gunakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!