Rumah > pembangunan bahagian belakang > C++ > Adakah &array[5] Ungkapan C yang Sah untuk Mengakses Elemen Tatasusunan Satu-Past-the-End?

Adakah &array[5] Ungkapan C yang Sah untuk Mengakses Elemen Tatasusunan Satu-Past-the-End?

Susan Sarandon
Lepaskan: 2024-12-27 00:44:11
asal
566 orang telah melayarinya

Is &array[5] a Valid C   Expression for Accessing the One-Past-the-End Array Element?

Mengakses Elemen Tatasusunan One-Past-the-End dengan &array[5]

Soalan:

Adakah &array[5] dianggap sebagai ungkapan kod C yang sah yang merujuk elemen satu melepasi penghujung tatasusunan?

Jawapan:

Ya, &array[5] dianggap kod C sah mengikut Piawaian C.

Terperinci Penjelasan:

C99 Standard:

  • 6.5.2.1, Perenggan 2: Mentakrifkan operator subskrip [] sebagai bersamaan dengan (((E1) (E2) )), di mana E1 ialah objek tatasusunan dan E2 ialah an integer.
  • 6.5.3.2, Perenggan 3: Nyatakan bahawa jika operan & operator adalah hasil daripada operator [], operator & dan unary tersirat * tidak dinilai , mengakibatkan operator & dialih keluar dan operator [] digantikan dengan operator.

C Standard:

  • 6.5.6, Perenggan 8: Membenarkan penuding menunjuk satu melepasi elemen terakhir tatasusunan dengan syarat ia tidak dinyahrujuk.

Berdasarkan piawaian ini, ungkapan &array[5] dinilai sebagai berikut:

  • &(&array[5]) = &(array 5)
  • &*(array 5) = array 5

Memandangkan tatasusunan 5 mata satu melepasi hujung tatasusunan dan tidak dinyahrujuk, &array[5] adalah sah ungkapan.

Perbandingan dengan Piawaian C:

Piawaian C sepadan dengan piawaian C dalam hal ini.

Sebab Merawatnya Secara Berbeza dari array 5 atau &array[4] 1:

Perbezaan utama antara &array[5] dan ungkapan seperti array 5 atau &array[4] 1 ialah penggunaan yang dimaksudkan. Walaupun tatasusunan 5 dan &tatasusunan[4] 1 secara eksplisit melaksanakan aritmetik penuding untuk mendapatkan penuding yang diimbangi dari permulaan tatasusunan, &array[5] menggunakan pengendali [] untuk mengakses terus elemen pada ofset itu. Perbezaan ini membolehkan pengaturcara lebih mudah merujuk hujung tatasusunan tanpa perlu melakukan aritmetik penuding eksplisit.

Atas ialah kandungan terperinci Adakah &array[5] Ungkapan C yang Sah untuk Mengakses Elemen Tatasusunan Satu-Past-the-End?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan