Rumah > pembangunan bahagian belakang > C++ > Bagaimana Menggunakan Range-Based for-Gelung pada Tatasusunan yang Dilalui kepada Fungsi Bukan Utama dalam C ?

Bagaimana Menggunakan Range-Based for-Gelung pada Tatasusunan yang Dilalui kepada Fungsi Bukan Utama dalam C ?

Susan Sarandon
Lepaskan: 2024-10-25 09:29:29
asal
905 orang telah melayarinya

How to Use Range-Based for-Loops on Arrays Passed to Non-main Functions in C  ?

Berasaskan julat untuk gelung pada Tatasusunan Diluluskan kepada Fungsi Bukan Utama

Apabila menetapkan tatasusunan kepada penunjuk dalam panggilan fungsi, pengkompil membuat kesimpulan jenis penunjuk dan kehilangan maklumat penting: saiz tatasusunan. Percanggahan ini mencetuskan ralat apabila cuba melakukan gelung berasaskan julat dalam fungsi.

Untuk menangani isu ini, satu penyelesaian ialah menggunakan rujukan tatasusunan dan bukannya penuding. Dengan berbuat demikian, fungsi mengekalkan pengetahuan tentang saiz tatasusunan:

<code class="cpp">void foo(int (&amp;bar)[3]);

int main() {
  int bar[3] = {1, 2, 3};
  for (int i : bar) {
    cout << i << endl;
  }
  foo(bar);
}

void foo(int (&amp;bar)[3]) {
  for (int i : bar) {
    cout << i << endl;
  }
}
Salin selepas log masuk

Sebagai alternatif, pendekatan generik boleh digunakan dengan memperkenalkan parameter templat yang mewakili saiz tatasusunan:

<code class="cpp">template <std::size_t array_size>
void foo(int (&amp;bar)[array_size]) {
  for (int i : bar) {
    cout << i << endl;
  }
}</code>
Salin selepas log masuk

Oleh memanfaatkan teknik ini, menjadi mungkin untuk berjaya melaksanakan gelung berasaskan julat pada tatasusunan yang dihantar kepada fungsi bukan utama.

Atas ialah kandungan terperinci Bagaimana Menggunakan Range-Based for-Gelung pada Tatasusunan yang Dilalui kepada Fungsi Bukan Utama dalam C ?. 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