C++指针问题,哪错了?
#include <iostream>using namespace std;
char* GetStr()
{
char sz[] = "Hello, C++";
return sz;
}
int main()
{
char* p = GetStr();
cout<<p<<endl;
return 0;
} 错误注释如下:
#include <iostream>
using namespace std;
char* GetStr()
{
char sz[] = "Hello, C++";// sz是局部变量,作用范围只在当前函数内部
return sz;// sz在函数返回后就不可见了,return sz并不能把字符串sz的首地址返回给main函数中的p。
}
int main()
{
char* p = GetStr();
cout<<p<<endl;
return 0;
}
建议修改:
#include <iostream>
using namespace std;
char* GetStr()
{
static char sz[] = "Hello, C++";// 将sz是定义为静态变量,作用域为整个程序
return sz;// 静态变量sz在函数返回后可见,return sz可以把字符串sz的首地址返回给main函数中的p。
}
int main()
{
char* p = GetStr();
cout<<p<<endl;
return 0;
}
页:
[1]