函数的指针参数

阅读量: 99 编辑

一、函数参数:传值和传引用

传值:形参是实参的拷贝,并不会改变实参的值。

传引用:形参(加&符号)就是实参,会改变实参的值。

//传值
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);
爱码岛编程公众号
微信扫码关注
爱码岛编程小程序
微信扫码打开
苏ICP备13052010号
©2023 南京匠成信息科技有限公司