有n个整数,要求你编写一个函数使其向右循环移动m个位置;为什么最后输出的全是地址?求解决修正

#include<stdio.h>
int* solve(int* s,int n,int m)
{
    int a[110];
    int i,k;
    for(i=m,k=0;i<n,k<n-m;i++,k++)
        a[k]=s[i];
    for(i=0,k=n-m;i<m,k<n;i++,k++)
        a[k]=s[i];
    return a;
}
int main(void)
    {
        int i,n,m,s[110];
        int* ans;
        scanf("%d%d",&n,&m);
        for(i=0;i<n;i++)
            scanf("%d",&s[i]);
        ans=solve(s,n,m);
        for(i=0;i<n;i++)
        {
            if(i==0)
                printf("%d",*ans+i);
            else
                printf(" %d",*ans+i);
        }
        return 0;
    }

#include<stdio.h>
int a[110];
int* solve(int* s,int n,int m)
{
    int i,k;
    for(i=m,k=0;i<n,k<n-m;i++,k++)
        a[k]=s[i];
    for(i=0,k=n-m;i<m,k<n;i++,k++)
        a[k]=s[i];
    return a;
}
int main(void)
    {
        int i,n,m,s[110];
        int* ans;
        scanf("%d%d",&n,&m);
        for(i=0;i<n;i++)
            scanf("%d",&s[i]);
        ans=solve(s,n,m);
        for(i=0;i<n;i++)
        {
            if(i==0)
                printf("%d",*(ans+i));
            else
                printf(" %d",*(ans+i));
        }
        return 0;
    }

 

局部变量在函数执行完成之后会自动释放,因此不应将局部变量的指针作为返回值

请问为啥a[110]要设置成全局变量

哦~(⊙o⊙)感谢