Rumah >pembangunan bahagian belakang >C++ >Mengapa Menggunakan Tanda Kurung dalam Pengisytiharan Pembolehubah C?
Semasa bekerja dengan C , pembangun mungkin terjumpa sintaks yang agak membingungkan yang membenarkan pembolehubah diisytiharkan dengan kepungan kurungan. Pengisytiharan seperti int (x) = 0; atau malah int (((x))) = 0; boleh membuatkan seseorang tertanya-tanya tentang tujuan dan kepraktisan mereka.
Jawapan kepada enigma ini terletak pada konsep pengelompokan. Pertimbangkan contoh mengisytiharkan penunjuk kepada fungsi jenis f(int). Pendekatan standard, int *f(int);, ditafsirkan sebagai fungsi mengembalikan int*. Walau bagaimanapun, untuk menentukan penuding dengan betul kepada fungsi itu, kurungan mesti diperkenalkan untuk membentuk int (*f)(int);.
Prinsip yang sama ini juga digunakan untuk pengisytiharan tatasusunan. Pengisytiharan int *x[5]; menandakan tatasusunan lima int*, manakala int (*x)[5]; menunjuk kepada tatasusunan lima int.
Dalam coretan kod yang disediakan:
struct B { }; struct C { C (B *) {} void f () {}; }; int main() { B *y; C (y); // Oops, compiler error! }
Niatnya adalah untuk membina objek jenis C yang akan melakukan operasi berguna dalam pemusnahnya. Walau bagaimanapun, pengkompil menyalah tafsir C (y); sebagai pengisytiharan pembolehubah y jenis C, mengakibatkan ralat takrifan semula. Di sinilah kumpulan kurungan memainkan peranan. Dengan melampirkan panggilan pembina sebagai C (y) dan bukannya C(y), tafsiran pengkompil diperbetulkan, membenarkan kod untuk menyusun seperti yang dimaksudkan.
Atas ialah kandungan terperinci Mengapa Menggunakan Tanda Kurung dalam Pengisytiharan Pembolehubah C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!