关于函数返回指针的问题
小弟初学c,想写个函数用来字符数组的累加代码如下:
程序代码:#include <stdio.h>
#include <wTypes.h>
typedef struct _MyRecvStr {
PVOID Point;
int Size;
} MyRecvStr, *PMyRecvStr;
/* str1+str2的返回 */
MyRecvStr *ReturnStr (PVOID str1,int str1len, PVOID str2,int str2len)
{
PVOID str3,ptemp;
int dizhi,alllen;
char temp2[10];
MyRecvStr *fanhui;
alllen=str1len+str2len;
char temp[alllen];
printf("第一个字符: %s.\n",str1);
printf("第二个字符: %s.\n",str2);
memset(&temp,0,alllen);
ptemp=&temp; /*获取要存放两个字符数组的起始地址*/
memcpy(&temp,str1,str1len); /*把第一个字符数组保存到temp*/
printf("temp1字符: %s.\n",ptemp);
dizhi=(int)(ptemp); /*把temp的地址转换成int型*/
dizhi=dizhi+str1len; /*获取被第一个字符数组占用后,第二个字符数组的起始地址*/
memcpy((PVOID)dizhi,str2,str2len); /*把第二个字符数组放到temp里*/
printf("temp2字符: %s.\n",&temp);
printf("字符Size: %d.\n",alllen);
printf("准备返回temp的指针地址: %d.\n",&temp);
fanhui->Point=(PVOID)temp;
fanhui->Size=16;
return fanhui;
}
int main (int argc, char *argv[])
{
char s1[10];
char s2[5];
memcpy(s1,"a2s2s2a3s2",10);
memcpy(s2,"z5x5a",5);
MyRecvStr Myrecv2;
Myrecv2=*(ReturnStr(&s1,10,s2,5));
printf("返回指针地址: %d.\n",Myrecv2.Point);
printf("返回数据大小: %d.\n",Myrecv2.Size);
char wawa[Myrecv2.Size];
memcpy(&wawa,Myrecv2.Point,Myrecv2.Size);
printf("返回数据内容: %s.\n",wawa);
return 0;
}
返回信息如下:
程序代码:第一个字符: a2s2s2a3s2箇. 第二个字符: z5x5a胃wK晒wP$=. temp1字符: a2s2s2a3s2. temp2字符: a2s2s2a3s2z5x5a. 字符Size: 15. 准备返回temp的指针地址: 2293516. 返回指针地址: 2293516. 返回数据大小: 16. 返回数据内容: ?@.
遇到的问题是:
返回的数据不对?
请各位帮帮忙,谢谢了









