#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