#include <stdio.h> #include <string.h> #include <stdlib.h> char *GetName(void) { //char name[]="MSR Asia"; char *name=(char*)malloc(strlen("MSR Asia")+1); strcpy(name,"MSR Asia"); return name; } int main(int argc,char* argv[]) { char name[32]; for(int i=0;i<=32;i++){ name[i]='/0'; } //name="Welcome to"; strcat(name,"Welcome"); //name[8]=""; char *p=GetName(); strcat(name,p); free(p); printf(name); return 1; } 1.调用的GetName();是为了返回字符串,但是局部的变量当离开函数时就结束了,因此需要动态申请内存; 2.字符串赋值使用strcat; 3.free和malloc必须成对出现,释放内存。