Pengisytiharan Pembolehubah dalam Tanda kurung dalam C
Kod berikut menimbulkan persoalan yang menarik:
<code class="cpp">int main() { int(s); }</code>
Mengapa pengisytiharan s dalam kurungan disusun tanpa ralat?
Penjelasan
Menurut [dcl.maksud] dalam piawai C:
"Dalam a pengisytiharan T D di mana D mempunyai bentuk ( D1 ), jenis id pengisytiharan yang terkandung adalah sama seperti id pengisytiharan yang terkandung dalam perisytiharan T D1."
Diringkaskan, kurungan tidak mengubah jenis pengecam yang diisytiharkan tetapi boleh menjejaskan pengikatan pengisytihar kompleks.
Contoh
Dalam kod yang disediakan, s ialah pengisytihar. Oleh itu, kurungan boleh digunakan tanpa mengubah suai maksudnya:
<code class="cpp">int(s) // Equivalent to int s</code>
Contoh Lanjutan
Kurungan terbukti amat berguna dalam senario yang lebih kompleks:
<code class="cpp">int *a[10]; // a is an array of ten pointers to int. int(*b)[10]; // b is a pointer to an array of ten ints.</code>
Perbezaan ini penting untuk memastikan peruntukan memori dan rujukan yang betul.
Atas ialah kandungan terperinci Mengapa Kurungan Menyusun Tanpa Ralat dalam Pengisytiharan Pembolehubah dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!