Rumah >pembangunan bahagian belakang >C++ >Mengapakah 'const T*' dan 'T const*' Kedua-dua Perisytiharan Penunjuk Sah dalam C ?
Mengapakah "const T" dan "T const" Kedua-duanya Sah?
Bahasa C membenarkan menentukan const pada kedua-dua belah asterisk apabila mengisytiharkan petunjuk. Fleksibiliti ini timbul daripada pendekatan penghuraian dari kiri ke kanan tatabahasa C.
Penghuraian Kiri-ke-Kanan
Pengkompil C menghuraikan token input dari kiri ke kanan. Apabila menghuraikan perisytiharan penuding, ia menemui token dan menganggap jenis penuding sedang ditakrifkan. Sebarang kelayakan const yang ditemui sebelum digunakan pada jenis data yang ditunjuk. Walau bagaimanapun, jika kelayakan const muncul selepas *, ia terpakai pada penuding itu sendiri.
Kesamaan Semantik
Makna semantik pengisytiharan penunjuk tetap sama tanpa mengira kedudukan const. Sama ada const berada di sebelah kiri atau kanan penentu jenis, pengkompil mentafsirnya dengan cara yang sama.
Penggunaan
Sementara "const T" dan "T const " adalah sama sah, sesetengah pengaturcara lebih suka meletakkan const di sebelah kiri untuk menyatakan secara eksplisit constness data itu sendiri. Walau bagaimanapun, pilihan satu sintaks berbanding yang lain adalah soal keutamaan peribadi.
Penunjuk Fungsi
Situasi yang sama timbul apabila mengisytiharkan penunjuk fungsi. Sintaks "void function1(void)" mengisytiharkan fungsi yang mengembalikan void , manakala "void (* function2)(void)" mengisytiharkan penunjuk fungsi kepada fungsi yang mengembalikan void.
Kesimpulan
Keupayaan untuk menentukan konst pada kedua-dua belah asterisk dalam penunjuk pengisytiharan adalah akibat daripada mekanisme penghuraian kiri ke kanan pengkompil C. Secara semantik, kedudukan const tidak menjejaskan maksud pengisytiharan. Pengaturcara bebas menggunakan mana-mana sintaks yang mereka suka untuk kebolehbacaan atau ketekalan.
Atas ialah kandungan terperinci Mengapakah 'const T*' dan 'T const*' Kedua-dua Perisytiharan Penunjuk Sah dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!