Um zu vermeiden, dass ein Array außerhalb der Grenzen liegt, können Sie eine Bereichs- oder Grenzenprüfung durchführen oder einen Sentinel-Wert verwenden, bevor Sie auf ein Element zugreifen. Bereichsprüfungen überprüfen, ob der Index innerhalb eines gültigen Bereichs liegt, Grenzprüfungen überprüfen einfach, ob der Index unterhalb der Array-Größe liegt, und Sentinels fügen ein zusätzliches „Sentinel“-Element zu den Grenzen des Arrays hinzu.
So vermeiden Sie Array-Out-of-Bounds
Array-Out-of-Bounds bezieht sich auf den Zugriff auf ein Element außerhalb des gültigen Bereichs des Arrays. Dies kann zu undefiniertem Verhalten führen, einschließlich Programmabstürzen oder falschen Ergebnissen. Hier sind einige Techniken, um zu vermeiden, dass Arrays außerhalb der Grenzen liegen:
1. Bereichsprüfung
Überprüfen Sie vor dem Zugriff auf ein Array-Element, ob der Index innerhalb des gültigen Bereichs liegt. Der folgende C++-Code prüft beispielsweise, ob der Index größer oder gleich 0 und kleiner als die Array-Größe ist:
int array[] = {1, 2, 3}; int index = 2; if (index >= 0 && index < sizeof(array) / sizeof(array[0])) { // 安全地访问元素 } else { // 处理越界情况 }
2 Bounds check
prüft einfach, ob der Index kleiner als die Array-Größe ist. Beispiel:
int[] array = {1, 2, 3}; int index = 2; if (index < array.length) { // 安全地访问元素 } else { // 处理越界情况 }
3. Initialisieren Sie ein Array mit einem Index
der Grenzen, die ein Element größer sind als tatsächlich erforderlich, und geben Sie ihm einen „Sentinel“-Wert. Zum Beispiel:
array = [0] * (size + 1)
Platzieren Sie dann den Sentinel-Wert im letzten Element und überprüfen Sie seinen Index, bevor Sie auf das Element zugreifen:
if index < size: # 安全地访问元素 else: # 处理越界情况
Praktisches Beispiel:
Betrachten Sie die Notwendigkeit, ein Array zu lesen, das aus vom Benutzerprogramm eingegebenen Zahlen besteht von. Um die Grenze nicht zu überschreiten, können Sie den folgenden C#-Code verwenden:
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]}"); }
Das obige ist der detaillierte Inhalt vonWie vermeide ich, dass ein Array außerhalb der Grenzen liegt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!