Rumah >pembangunan bahagian belakang >C++ >Mengapa Menggunakan Tanda Kurung dalam Pengisytiharan Pembolehubah C?

Mengapa Menggunakan Tanda Kurung dalam Pengisytiharan Pembolehubah C?

Barbara Streisand
Barbara Streisandasal
2024-12-20 16:30:14996semak imbas

Why Use Parentheses in C   Variable Declarations?

Kurungan dalam Perisytiharan Pembolehubah: Mendedahkan Kepentingannya

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!

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