將陣列常用操作封裝為獨立函式,提高複用性與可讀性。
#includevoid init(int *arr, int size) { for (int i = 0; i < size; i++) arr[i] = i; } void print(int *arr, int size) { for (int i = 0; i < size; i++) printf("%d ", arr[i]); printf("\n"); } void empty(int *arr, int size) { for (int i = 0; i < size; i++) arr[i] = 0; } static void swap(int *p1, int *p2) { int tmp = *p1; *p1 = *p2; *p2 = tmp; } void reverse(int *arr, int len) { int left = 0, right = len - 1; while (left < right) { swap(&arr[left], &arr[right]); left++; right--; } } int main() { int arr[10]; int len = sizeof(arr) / sizeof(arr[0]); init(arr, len); // 0 1 2 … 9 print(arr, len); reverse(arr, len); // 9 8 … 0 print(arr, len); empty(arr, len); // 全 0 print(arr, len); system("pause"); return 0; }
static void swap:內部連結,隱藏實作細節。reverse 使用雙指標法,原地反轉,空間 O(1)。int *arr, int size,不依賴固定大小,通用性強。0 1 2 3 4 5 6 7 8 9 9 8 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0