C尀C++ 字符问题

2025-04-14 20:02:36
推荐回答(1个)
回答1:

在char* kk(char *a,char *b) 定义的 ch[10]在函数kk结束时,ch超出他的作用域,内存被清空。 所以,char *p指向的是一片被清空的内存。这样输出的结果是未定义的。

如果想要保持这片内存,需要在函数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<return ch; // &ch[0] 和 ch 没有区别
}

void main()
{
char *p=kk("an","bn");
cout<delete(p); // 清空内存。 delete和new配对,或是c风格malloc和free
}