Bagaimana untuk mengelakkan tatasusunan di luar batas?

WBOY
Lepaskan: 2024-06-05 18:33:00
asal
1266 orang telah melayarinya

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.

Bagaimana untuk mengelakkan tatasusunan di luar batas?

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 {
  // 处理越界情况
}
Salin selepas log masuk

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 {
  // 处理越界情况
}
Salin selepas log masuk

3 Mulakan tatasusunan dengan indeks

daripada sempadan satu elemen yang lebih besar daripada yang sebenarnya diperlukan, memberikannya nilai "sentinel". Contohnya:

array = [0] * (size + 1)
Salin selepas log masuk

Kemudian, letakkan nilai sentinel dalam elemen terakhir dan semak indeksnya sebelum mengakses elemen:

if index < size:
  # 安全地访问元素
else:
  # 处理越界情况
Salin selepas log masuk

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]}");
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk mengelakkan tatasusunan di luar batas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan