gpt4 book ai didi

c++ - 作用域和 C++ 指针

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:56:45 24 4
gpt4 key购买 nike

我有以下代码:

using namespace std;
vector<string*> v;
{
string s = "hello";
v.push_back(&s);
}
{
string ss = "goodbye";
v.push_back(&ss);
}

cout << v.at(0)->c_str() << endl;
cout << v.at(1)->c_str() << endl;

打印

goodbye
goodbye

如果我删除范围括号,代码将打印

hello
goodbye

当我离开第一个作用域时究竟发生了什么,指向第一个字符串的指针现在指向第二个?

最佳答案

存储的指针在作用域之后变成悬挂指针,任何读取它们指向的内容的尝试都会产生未定义的行为。

关于c++ - 作用域和 C++ 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8791087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com