vector作为参数传递的几种情况

本文探讨了C++中vector作为参数传递的不同方式及其影响,包括通过指针、引用及值传递三种方法,并展示了每种方式如何改变vector的内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vector作为参数传递的几种情况

void change1(vector<int> *a){
    cout<<&a<<endl;//cout<<a<<endl;
    for(int i=0;i<8;i++)
    {    (*a)[i]=1;cout<<&(*a)[i]<<" ";}
    cout<<endl;
}
void change2(vector<int> &a){
    cout<<&a<<endl;
    for(int i=0;i<8;i++)
    {    a[i]=1;cout<<&a[i]<<" ";}
    cout<<endl;
}
void change3(vector<int> a){
    cout<<&a<<endl;
    for(int i=0;i<8;i++)
    {    a[i]=1;cout<<&a[i]<<" ";}
    cout<<endl;
}
int main()  
{  
        int a[8]={1,2,3,4,5,6,7,8};
        vector<int> aa(a,a+8);
        cout<<&aa<<endl;
        change1(&aa);for(int i=0;i<8;i++)cout<<aa[i]<<" ";
        cout<<endl;
        for(int i=0;i<8;i++)aa[i]=i+1;
        cout<<&aa<<endl;
        change2(aa);for(int i=0;i<8;i++)cout<<aa[i]<<" ";
        cout<<endl;
        for(int i=0;i<8;i++)aa[i]=i+1;
        cout<<&aa<<endl;
        change3(aa);for(int i=0;i<8;i++)cout<<aa[i]<<" ";
        
        system("pause");
        return 0;  
}

results:

0052F9C4 //aa指针指向的地址&aa
0052F894 //拷贝的指针的地址,函数内cout<<a,a的值,即a指向的地址仍然为0052F9C4
00884FE0 00884FE4 00884FE8 00884FEC 00884FF0 00884FF4 00884FF8 00884FFC
1 1 1 1 1 1 1 1
0052F9C4
0052F9C4
00884FE0 00884FE4 00884FE8 00884FEC 00884FF0 00884FF4 00884FF8 00884FFC
1 1 1 1 1 1 1 1
0052F9C4
0052F884
008850D8 008850DC 008850E0 008850E4 008850E8 008850EC 008850F0 008850F4
1 2 3 4 5 6 7 8





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值