c语言数组逆序
时间: 2025-06-01 07:15:03 浏览: 12
### C语言中实现数组逆序的方法
在C语言中,可以通过多种方式实现数组的逆序操作。以下将详细介绍几种常见的方法,并附上代码示例。
#### 方法一:首尾交换法
此方法通过定义两个指针分别指向数组的首尾元素,然后逐步向中间靠拢,同时交换所指向的元素[^1]。这种方法不需要额外的空间开销,效率较高。
```c
#include <stdio.h>
void reverseArray(int arr[], int len) {
int left = 0;
int right = len - 1;
while (left < right) {
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
}
}
void printArray(int arr[], int len) {
for (int i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int len = sizeof(arr) / sizeof(arr[0]);
printf("逆序前: ");
printArray(arr, len);
reverseArray(arr, len);
printf("逆序后: ");
printArray(arr, len);
return 0;
}
```
#### 方法二:使用指针实现逆序
此方法利用指针直接对数组元素进行操作,逻辑与首尾交换法类似,但更贴近底层实现[^3]。
```c
#include <stdio.h>
void reverseWithPointer(int *arr, int len) {
int *start = arr;
int *end = arr + len - 1;
int temp;
while (start < end) {
temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
}
void printArray(int arr[], int len) {
for (int i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
int arr[] = {10, 20, 30, 40, 50};
int len = sizeof(arr) / sizeof(arr[0]);
printf("逆序前: ");
printArray(arr, len);
reverseWithPointer(arr, len);
printf("逆序后: ");
printArray(arr, len);
return 0;
}
```
#### 方法三:递归实现逆序
递归方法通过不断缩小问题规模来实现逆序。每次递归时,交换首尾元素,然后对剩余部分继续递归处理[^4]。
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
void reverseRecursive(int arr[], int start, int end) {
if (start >= end) return;
swap(&arr[start], &arr[end]);
reverseRecursive(arr, start + 1, end - 1);
}
void printArray(int arr[], int len) {
for (int i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
int arr[] = {100, 200, 300, 400, 500};
int len = sizeof(arr) / sizeof(arr[0]);
printf("逆序前: ");
printArray(arr, len);
reverseRecursive(arr, 0, len - 1);
printf("逆序后: ");
printArray(arr, len);
return 0;
}
```
### 总结
以上三种方法均可以实现数组的逆序操作。其中,首尾交换法和指针法是较为常用且高效的实现方式,而递归法则更适合理解递归思想,但在性能上可能略逊于前两种方法。
阅读全文
相关推荐

















