C语言 用指针实现数组逆序输出


#include
#define sum 5
void reverse(int *a);
int i=0;
main()
{
    int a[sum];
    for(i;i<sum;i++){
        scanf("%d",&a[i]);
    }
    reverse(a);
    for(i;i<sum;i++){
        printf("%d",a[i]);
    }
}
void reverse(int *a)
{
    int t;
    for(i;i<=sum/2;i++){
        t=a[i];
        a[i]=a[sum-i-1];
        a[sum-i-1]=t;
    }
    
}

用指针实现数组逆序输出,为什么实现不了呢?

你把i声明为全局变量
你走完第一个循环i就变成5了
然后后面的i都是5
逆序函数里面的i也是5
解决办法就是每个循环里面的i都int i=0 这样写

记得采纳一下

 
#include<stdio.h>
#define sum 5
void reverse(int *a);

main()
{
    int a[sum];
    for(int i=0;i<sum;i++){
        scanf("%d",&a[i]);
    }
    reverse(a);
    for(int i=0;i<sum;i++){
        printf("%d",a[i]);
    }
}
void reverse(int *a)
{
    int t;
    for(int i=0;i<=sum/2;i++){
        t=a[i];
        a[i]=a[sum-i-1];
        a[sum-i-1]=t;
    }
}