记录C++指针作为函数函数的使用
array的指针作为函数参数
首先定义一个数组
int a[3] = {1,2,3};
接着定义函数ReAssign,它的作用是对数组重新赋值,由原来的a[i]=i+1重新赋值为a[i]=i2,这里传递的是数组的首地址,而在使用该数组时正常使用就行
void ReAssign(int *a){
for(int i=0;i<3;i++){
a[i] = i*i;
}
}
vector的指针作为函数参数
但是对于vector类型同样的操作无法通过编译,
只有改成(b)的方式才能对vector的成员进行操作,但是对数组用a的方式进行引用编译是无法通过的
void ReAssignVector(vector<int > *b){
for(int i=0;i<3;i++){
(*b)[i] = i*i;
}
}
猜测是c++编译器对数组的引用做了特殊处理,对于数组a既是变量名又是地址即a[i]与&a+i是完全等价的,而对于vector在函数里传递进去的是地址,无法直接引用其元素,只能*b然后再取元素
版权声明:本文为km719340776原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。