gpt4 book ai didi

c++ - 何时使用 "Static"进行持久化

转载 作者:太空宇宙 更新时间:2023-11-03 10:39:10 25 4
gpt4 key购买 nike

我知道 static 可以为 c++ 中的事物提供持久性,但我对何时需要它感到困惑。

例如,如果我有一个函数:

const int get5(){
int x = 5;
return x;
}

然后我把return打印出来,5自然就出来了。但是,如果我对数组进行同样的尝试:

const int* getArray() {
int arr[5];
arr[0] = 5;
arr[1] = 6;
arr[2] = 7;
arr[3] = 8;
arr[4] = 9;
return arr;
}

然后我遍历数组的每个元素,我就开始胡言乱语了:

const int* ptr = getArray();
for (int index = 0; index < 5; index++) {
cout << ptr[index] << endl;
}

结果:

5
19920968
257848734
258124688
258124688

但是,如果我在 arr 前面加上静态修饰符,赋予它持久性,它就可以工作:

5
6
7
8
9

我的问题是,为什么我需要将数组声明为静态的以使其值持久化,但在其他类型中却没有必要?谢谢!

最佳答案

不同之处在于,在第一个示例中,您将返回一个拷贝,而在第二个示例中,您将返回一个指针。当您返回一个拷贝时,原始值是否被破坏并不重要。但是当您返回一个指针时,您必须确保所指向对象的生命周期超过函数的末尾,否则您将得到未定义的行为。

关于c++ - 何时使用 "Static"进行持久化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48466147/

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