〃忝書γě渎ぐ 发表于 2020-2-25 16:35:36

C++指针问题,哪错了?

#include <iostream>
using namespace std;

char* GetStr()
{
    char sz[] = "Hello, C++";
    return sz;
}

int main()
{
    char* p = GetStr();
    cout<<p<<endl;

    return 0;
}

major_lyu 发表于 2020-2-25 16:35:37

错误注释如下:

#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]
查看完整版本: C++指针问题,哪错了?