Онлайн компилятор C

#include <stdio.h> void reverse_array(int *a, int n) { int a[100]={0}; for (int i = n - 1; i >= 0; i--) { a[i]=*(a+i); } } int main() { int n = 5; int s[] = {1, 2, 3, 4, 5}; int *a = s; reverse_array(a, n); return 0; }
这段代码试图实现数组反转,但存在几个关键问题。函数 `reverse_array` 内部重新定义了一个局部数组 `a`,这导致参数指针 `a` 被隐藏,无法访问到原始数组。同时,反转逻辑将元素赋值给了这个新数组,而不是修改原数组。

- 函数参数 `int *a` 和函数内部定义的 `int a[100]` 名称冲突,内部数组 `a` 会覆盖参数指针,导致无法操作传入的数组。
- 反转时,应该将原数组的元素按相反顺序放回原数组,而不是放入一个新数组。可以考虑使用一个临时变量来交换对称位置的元素。