Administrator
Administrator
Published on 2025-03-21 / 2 Visits
0
0

cpp你绝了

理论上来讲,{}可以划分为一个单独的作用域,但是经过测试发现,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
*/

纠正一下,是我的想法错了,出现这种现象的本质原因是类传递为引用传递,自然受到作用域限制,而基础变量是拷贝传递,不受作用域限制。


Comment