C++引用方式传参,传值方式传参(*、&)和数组作为参数传递
1、引用方式传参
引用相当于是外部变量的别名,实际操作的就是该变量,即在函数内对该变量进行修改的话,在外部该变量也会相应被修改。
//外部变量的值也会被修改
void ChangeRef(int& ref){
ref++;
cout << "引用内修改后的值为:" << ref << endl;
}
2、传值方式传参
实际上是复制了一个外部变量的副本进入函数中,在函数内操作的为该副本,对该变量的修改并不会实际修改函数外的该变量。
//外部变量的值不会被修改
void ChangeNotRef(int ref){
ref++;
cout << "通过传值方式在函数内修改后的值为:" << ref << endl;
}
3、指针方式传参
如果传值方式传入的是指针,那么如果单纯修改指针,那么在跳出函数后,该指针指向不受影响,但是如果修改的是指针指向的值,那么外部指针所指向的内容会相应的修改。因为以指针为参数进行传值,也是在函数内部复制了一个指针的副本,因而在内部修改指针本身即修改其副本并不影响外部的指针,但是两个指针都是指向同一个内存空间的,因而如果在函数内部修改了指针指向的内容,外部指针指向的内容也就相应改变了。
//先将指针指向地址,然后修改了指针指向的地址
//退出函数后,指针指向的地址不变
int *ptr = &Ref;
void ChangePtr(int* ptr){
ptr++; //修改地址
cout << "函数内修改后的指针指向:" << ptr << endl;
}
//调用方式
ChangePtr(ptr);
//先将指针指向地址,然后修改了指针指向地址的内容
int *ptr = &Ref;
void ChangePtrVal(int* ptr){
(*ptr)++; //修改值
cout << "函数内修改后指针指向的值:" << *ptr << endl;
}
//调用方式
ChangePtrVal(ptr);
4、数组作为参数的传递
当数组作为参数传递到函数时,形参直接是数组的头地址(也就是数组下标为0的地址),实参直接用数组的名字,这样经过函数可以改变外部数组的值。
//可以改变外部数组的值
//声明方式
void BubbleSort(int R[], int n){
*******
}
//调用方式
BubbleSort(R, n);