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
504 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!

sumber:php.cn
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