关于函数返回指针的问题
小弟初学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. 返回数据内容: ?@.
遇到的问题是:
返回的数据不对?
请各位帮帮忙,谢谢了