一、函数参数:传值和传引用
传值:形参是实参的拷贝,并不会改变实参的值。
传引用:形参(加&符号)
就是实参,会改变实参的值。
//传值
void chuanZhi(int num){
num += 10;
}
//传引用
void chuanYinYong(int &num){
num += 10;
}
int main(){
int num = 5;
chuanZhi(5);
cout << num << endl; //5
chuanYinYong(num);
cout << num << endl; //15
return 0;
}
二、函数参数:传指针
函数定义中的参数如果是指针类型,那么在传入实参的时候,传的地址。
//联想推导一下
int a = 100;
int *p;
p = &a;
如果 *p
作为函数的参数,需要传变量的地址。
//传指针
void chuanZhiZhen(int *p){
*p += 10;
}
int main(){
int num = 5;
chuanZhiZhen(&num); //传地址
cout << num << endl; //15
return 0;
}
传引用和传指针都是对实参有影响的。
三、函数参数:传数组
如果想将一个数组作为参数传递给函数,可以用数组指针来传递。
//求和
int sum(int *p, int size){ //也可以直接传数组,int sum(int p[], int size){
int sum = 0;
for(int i = 0; i < size; i++){
sum += p[i];
}
return sum;
}
int main(){
int a[] = {10,20,30,40,50};
int b = sum(a, 5); //a是数组的首地址,也可以用 &(a[0])
cout << b << endl;
return 0;
}
注意:函数在传数组(参数)的时候,都会退化为指针,所以不能用 sizeof 来获取数组的大小。可以先计算好数组的长度,作为参数传进去。
int size = sizeof(a)/sizeof(a[0]);
int b = sum(a, size);