在C語言中,數組越界是一個常見的錯誤,可能導致程序崩潰或產生不可預測的結果。為了提高代碼安全性,可以采取以下措施:
#include <stdio.h>
#include <stdlib.h>
int main() {
int arr[] = {1, 2, 3, 4, 5};
int len = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < len; i++) {
printf("arr[%d] = %d\n", i, arr[i]);
}
return 0;
}
malloc
和free
函數來創建和釋放動態數組。#include <stdio.h>
#include <stdlib.h>
int main() {
int n;
printf("Enter the size of the array: ");
scanf("%d", &n);
int *arr = (int *)malloc(n * sizeof(int));
if (arr == NULL) {
printf("Memory allocation failed.\n");
return 1;
}
for (int i = 0; i < n; i++) {
printf("Enter element %d: ", i + 1);
scanf("%d", &arr[i]);
}
printf("Array elements:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
free(arr);
return 0;
}
#include <stdio.h>
void print_array(int *arr, int size) {
for (int i = 0; i < size; i++) {
printf("%d ", *(arr + i));
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr) / sizeof(arr[0]);
print_array(arr, size);
return 0;
}
std::vector
)和庫(如STL),可以幫助您更安全地處理數組和動態內存分配。#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
for (int i = 0; i < vec.size(); i++) {
std::cout << "vec["<< i << "] = " << vec[i] << std::endl;
}
return 0;
}
總之,要確保代碼的安全性,關鍵是始終保持對數組邊界的關注,并在適當的時候使用動態數據結構和安全的編程技巧。