#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char* swich(int n)
{
char A[20],B[20];
char*p;//=(char*)malloc(4*sizeof(char));
int i=0,a;
int minus=0;
if(n<0)
{
minus=1;
n=-n;
}
while(n/10!=0)
{
a=n%10;
n=n/10;
A[i++]=‘0‘+a;
}
a=n%10;
A[i++]=‘0‘+a;
if(minus==1)
A[i++]=‘-‘;
A[i]=0;
int len=i;
int j=len-1;
i=0;
while(i<len)
{
B[i]=A[len-1-i];
i++;
}
B[i]=0;
p=B;
printf("%s,",p);
return p;
}
void main()
{
int a=-234;
char* p=swich(a);
char b[10];
strcpy(b,p);
int i=0;
printf("%s,",b);
}
for(int i=0;i<3;i++)
{
printf("%c",p[i]);
}
C语言:一个涉及指针函数返回值与printf乱码、内存堆栈的经典案例
原文地址:http://blog.csdn.net/yunfuyiren/article/details/38885351