在线编译器 C

#include <stdio.h> void reverse_array(int *a, int n) { int b[100] = {0}; for (int i = n - 1; i >= 0; i--) { b[n-i-1] = *(a + i); } for (int i = 0; i < n; i++) { *(a + i) = b[i]; } } int main() { int n = 5; int s[] = {1, 2, 3, 4, 5}; int *a = s; reverse_array(a, n); for (int i = 0; i < n; i++) { printf("%d ", s[i]); } return 0; }
这段代码定义了一个函数 `reverse_array`,它接收一个整型指针和数组长度,将数组元素反转。主函数中创建了一个数组 `s`,调用反转函数后打印结果。

- 你的反转逻辑是正确的,但函数内部定义了一个固定大小 `100` 的临时数组 `b`。如果传入的数组长度 `n` 大于 100,程序会出错。考虑如何让函数不依赖固定大小的临时数组。

- 反转数组其实不需要额外的数组空间,你可以尝试直接在原数组上交换对称位置的元素,比如用两个指针或索引分别从首尾向中间移动并交换值。