理论上来讲,{}可以划分为一个单独的作用域,但是经过测试发现,for循环内声明的int[]无法在for循环外访问,而for循环内声明的vector<int>可以在for循环之外正常访问。
不愧是你,cpp。
#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<int*> mem;
for(int i=0;i<10;++i){
int temp[] = {i};
mem.push_back(temp);
cout<<mem[i][0]<<endl;
}
for(int i=0;i<10;++i){
cout<<mem[i][0]<<endl;
}
}
/**
C:\Users\Lenovo\CLionProjects\untitled\cmake-build-debug\test.exe
0
1
2
3
4
5
6
7
8
9
9
9
9
9
9
9
9
9
9
9
进程已结束,退出代码为 0
*/
纠正一下,是我的想法错了,出现这种现象的本质原因是类传递为引用传递,自然受到作用域限制,而基础变量是拷贝传递,不受作用域限制。