在char* kk(char *a,char *b) 定义的 ch[10]在函数kk结束时,ch超出他的作用域,内存被清空。 所以,char *p指向的是一片被清空的内存。这样输出的结果是未定义的。 delete(p); // 清空内存。 delete和new配对,或是c风格malloc和free
如果想要保持这片内存,需要在函数kk()内手动为ch申请内存,并在main中手动释放这些内存。 简单修改如下:
#include
#include
using namespace std;
char* kk(char *a,char *b)
{
char *ch = new char[10]; //c++的new操作符或是使用c的方式:malloc
strcpy(ch,"");
strcat(ch,a);
strcat(ch,b);
cout<
}
void main()
{
char *p=kk("an","bn");
cout<
}