Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk mengelakkan tatasusunan di luar batas?

Bagaimana untuk mengelakkan tatasusunan di luar batas?

WBOY
WBOYasal
2024-06-05 18:33:001347semak imbas

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

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!

Kenyataan:
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