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指针指向的地址&aa0052F894 //拷贝的指针的地址,函数内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