设计一个函数指针,完成字符串的相加并返回相加后字符串的地址
方式一(不推荐,总是会忘记free掉内存):
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char * catstr(char * s1,char * s2);
int main(){
char s1[] = "123456";
char s2[] = "67890";
char *str = NULL;
printf("before:str = 0x%x\n",str);
str = catstr(s1,s2);
printf("after:str = 0x%x\n",str);
printf("%s",str);
free(str); //将malloc分配的存储空间释放掉
return 0;
}
char * catstr(char * s1,char * s2){
char * str, *p;
int length = strlen(s1) + strlen(s2) +1;
//长度加1是为了存放'\0'
str = (char *) malloc(length * sizeof(char));
memset(str,0,length * sizeof (char));
p = str; //p指针和str指针同时指向分配的连续存储空间的首元素
while(*s1){
*p++ =