Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk mengelakkan tatasusunan di luar batas?
Untuk mengelakkan tatasusunan di luar had, anda boleh melakukan semakan julat atau sempadan atau menggunakan nilai sentinel sebelum mengakses elemen. Semakan julat mengesahkan bahawa indeks berada dalam julat yang sah, semakan sempadan hanya mengesahkan bahawa indeks berada di bawah saiz tatasusunan dan pengawal menambah elemen "sentinel" tambahan pada sempadan tatasusunan.
Cara mengelakkan tatasusunan di luar sempadan
Tatasusunan di luar sempadan merujuk kepada mengakses elemen di luar julat sah tatasusunan. Ini boleh membawa kepada tingkah laku yang tidak ditentukan, termasuk ranap program atau hasil yang salah. Berikut ialah beberapa teknik untuk mengelakkan tatasusunan di luar had:
1. Semak Julat
Sebelum mengakses elemen tatasusunan, semak sama ada indeks berada dalam julat yang sah. Sebagai contoh, kod C++ berikut menyemak sama ada indeks lebih besar daripada atau sama dengan 0 dan kurang daripada saiz tatasusunan:
int array[] = {1, 2, 3}; int index = 2; if (index >= 0 && index < sizeof(array) / sizeof(array[0])) { // 安全地访问元素 } else { // 处理越界情况 }
2 semak sempadan
hanya menyemak sama ada indeks kurang daripada saiz tatasusunan. Contohnya:
int[] array = {1, 2, 3}; int index = 2; if (index < array.length) { // 安全地访问元素 } else { // 处理越界情况 }
3 Mulakan tatasusunan dengan indeks
daripada sempadan satu elemen yang lebih besar daripada yang sebenarnya diperlukan, memberikannya nilai "sentinel". Contohnya:
array = [0] * (size + 1)
Kemudian, letakkan nilai sentinel dalam elemen terakhir dan semak indeksnya sebelum mengakses elemen:
if index < size: # 安全地访问元素 else: # 处理越界情况
Contoh praktikal:
Pertimbangkan keperluan untuk membaca tatasusunan yang terdiri daripada nombor yang dimasukkan oleh program pengguna daripada. Untuk mengelak daripada melepasi garisan, anda boleh menggunakan kod C# berikut:
Console.WriteLine("Enter the size of the array:"); int size = int.Parse(Console.ReadLine()); int[] array = new int[size]; for (int i = 0; i < array.Length; i++) { Console.WriteLine($"Enter the value for index {i}:"); array[i] = int.Parse(Console.ReadLine()); } Console.WriteLine("The values in the array:"); for (int i = 0; i < array.Length; i++) { Console.WriteLine($"{i}: {array[i]}"); }
Atas ialah kandungan terperinci Bagaimana untuk mengelakkan tatasusunan di luar batas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!