Rumah >pembangunan bahagian belakang >C++ >Peletakan Const dalam C : `const T` lwn. `T const` – Mana Yang Perlu Saya Gunakan?

Peletakan Const dalam C : `const T` lwn. `T const` – Mana Yang Perlu Saya Gunakan?

Barbara Streisand
Barbara Streisandasal
2024-12-18 11:51:16942semak imbas

Const Placement in C  : `const T` vs. `T const` – Which Should I Use?

Mengapa "const T" dan "T const" Kedua-duanya Sah, dan Mana Yang Perlu Anda Gunakan?

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:

  • void * function1(void) mengisytiharkan fungsi untuk mengembalikan penunjuk void.
  • void (* function2)(void) mengisytiharkan penunjuk fungsi kepada fungsi yang mengembalikan void .

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!

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