c++数字转字符串 得不到结果

书后习题让用递归做,感觉没什么问题,就是得不到结果啊。。。
#include "stdafx.h"
#include
using namespace std;
char * hehe(int n, int i, char*p)
{
int a[56];
if (n < 10) {
int j = 0;
a[i] = n; while (i--)
{
p[j++] = a[i] + 48;
}
p[j] = '\0';
return p;
}
else {
int ni = n / 10;
a[i++] = n - ni * 10;
hehe(ni, i, p);

}

}
int main()
{
int i = 0;
char name[20];
char(&p)[20] = name;
int n;
cin >> n;
hehe(n, i, p);
cout << p;
system("pause");
return0;
}

打断点调试看下哪里有问题

你的i为0了
i代表转换多少位

函数结束前少了一个return

 #include<iostream>
using namespace std;
int a[56];//改为全局
char * hehe(int n, int i, char*p)
{
    //int a[56];
    if (n < 10) 
    {
        int j = 0;
        a[i] = n; 
        while (i)
        {
        //  cout<<i<<" "<<a[i]<<endl;
            p[j++] = a[i] + 48;
            //字符'0'的ascii码为48 
            i--;
        }
        p[j] = '\0';
        return p;
     }
     else
     {
        int ni = n / 10;
        a[i++] = n - ni * 10;
     // cout<<a[i-1]<<endl;
        hehe(ni, i, p);
     }
}
int main()
{
    int i = 1;
    char name[20];
    int n;
    cin >> n;
    hehe(n, i, name);
    cout << name;
    return 0;
}