為了避免陣列越界,可以在存取元素之前執行範圍或邊界檢查或使用哨兵值。範圍檢查驗證索引是否在有效範圍內,邊界檢查只需驗證索引是否低於陣列大小,而哨兵值將額外的「哨兵」元素新增至陣列的邊界。
如何避免陣列越界
陣列越界是指存取超出陣列有效範圍內的一個元素。這會導致未定義的行為,包括程式崩潰或錯誤的結果。以下是一些避免陣列越界的技術:
1. 範圍檢查
在存取陣列元素之前,檢查索引是否在有效範圍內。例如,以下 C++ 程式碼檢查索引是否大於等於 0 且小於陣列大小:
int array[] = {1, 2, 3}; int index = 2; if (index >= 0 && index < sizeof(array) / sizeof(array[0])) { // 安全地访问元素 } else { // 处理越界情况 }
#2. 邊界檢查
##只需檢查索引是否低於陣列大小。例如:int[] array = {1, 2, 3}; int index = 2; if (index < array.length) { // 安全地访问元素 } else { // 处理越界情况 }
3. 使用邊界的索引
初始化一個數組,其大小比實際所需多一個元素,使其具有一個「哨兵」值。例如:array = [0] * (size + 1)
if index < size: # 安全地访问元素 else: # 处理越界情况
實戰案例: ##考慮一個需要讀取一個由使用者輸入的數字組成的陣列的程式。為了避免越界,可以使用以下 C# 程式碼:
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]}"); }
以上是如何避免數組越界?的詳細內容。更多資訊請關注PHP中文網其他相關文章!