#include <stdio.h>
char* get_str()
{
char str[] = {"hello"};
return str;
}
int main()
{
char* p = get_str();
printf("%s/n", p);
return 0;
}
【解决方案】
====================
(1)用字符串常量指针代替局部变量的数组名
#include <stdio.h>
char* get_str()
{
char *str = {"hello"};
return str;
}
int main()
{
char* p = get_str();
printf("%s/n", p);
return 0;
}
(2)把数组声明为全局的变量
(3)使用静态数组,即static char str[] = {"hello"};
(4)最好的解决方案:在主函数中申请空间,调用函数进行字符串的赋值操作,最后在主函数中释放申请的空间。
#include <iostream>
using namespace std;
void f(char* buffer, int size)
{
strncpy(buffer,"ABCD",size);
}
int main()
{
int size = 100;
char *buffer = (char*)malloc(size);
f(buffer,size);
cout<<buffer<<endl;
free(buffer);
return 0;
}