在C語言中,數組越界通常會導致未定義的行為,包括程序崩潰、數據損壞等。為了處理數組越界異常,可以采取以下幾種方法:
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5};
int index = 6;
if (index >= 0 && index < sizeof(arr) / sizeof(arr[0])) {
printf("Element at index %d is %d\n", index, arr[index]);
} else {
printf("Index out of bounds\n");
}
return 0;
}
malloc
和realloc
)可以更靈活地管理內存,并在運行時檢查數組邊界。例如:#include <stdio.h>
#include <stdlib.h>
int main() {
int *arr = (int *)malloc(5 * sizeof(int));
int index = 6;
if (arr != NULL) {
for (int i = 0; i < 5; i++) {
arr[i] = i + 1;
}
if (index >= 0 && index < 5) {
printf("Element at index %d is %d\n", index, arr[index]);
} else {
printf("Index out of bounds\n");
}
free(arr);
} else {
printf("Memory allocation failed\n");
}
return 0;
}
std::vector
)來自動處理數組邊界。例如:#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
int index = 6;
if (index >= 0 && index < vec.size()) {
std::cout << "Element at index " << index << " is " << vec[index] << std::endl;
} else {
std::cout << "Index out of bounds" << std::endl;
}
return 0;
}
請注意,C語言本身沒有內置的異常處理機制,因此需要采取其他方法來處理數組越界等錯誤。在編寫代碼時,始終要確保數組訪問在有效范圍內,以避免潛在的問題。