C++中的参数传递

//C++中的参数传递,用传值实现(以交换函数为例)
#include<iostream>
using namespace std;
//定义有参函数swap且传值实现
void swap(int m,int n){
	int temp;
	temp=m;
	m=n;
	n=temp;
}
int main(){
	int a,b;
	cout<<"请分别输入a和b的值:"<<endl;
	cin>>a>>b;
	swap(a,b);
	cout<<"a和b交换后的分别是:"<<endl;
	cout<<a<<" "<<b;
}

输出结果:
在这里插入图片描述
解释:传值只是将实参的值传给了形参,形参之间的交换不影响实参的值

//C++中的参数传递,用传址(指针)实现(以交换函数为例)
#include<iostream>
using namespace std;
//定义有参函数swap且传址(指针)实现
void swap(int *m,int *n){
	int temp;
	temp=*m;
	*m=*n;
	*n=temp;
}
int main(){
	int a,b,*p1,*p2;
	cout<<"请分别输入a和b的值:"<<endl;
	cin>>a>>b;
	p1=&a;p2=&b;//给int*类型的指针变量p1赋int型变量a的地址
	swap(p1,p2);
	cout<<"a和b交换后的分别是:"<<endl;
	cout<<a<<" "<<b;
}

输出结果:
在这里插入图片描述
解释:通过交换地址实现,分别定义指针变量指向变量a、b的地址,再将两个地址进行交换以实现a、b值的交换,因为定义了多个指针变量,所以相对繁琐,效率较低

//C++中的参数传递,用传址(引用)实现(以交换函数为例)
#include<iostream>
using namespace std;
//定义有参函数swap且传址(引用)实现
void swap(int& m,int& n){
	//这里参数还是int型的m、n,只不过附加了一个取地址的操作
	int temp;
	temp=m;
	m=n;
	n=temp;
}
int main(){
	int a,b;
	cout<<"请分别输入a和b的值:"<<endl;
	cin>>a>>b;
	swap(a,b);
	cout<<"a和b交换后的分别是:"<<endl;
	cout<<a<<" "<<b;
}

输出结果:
在这里插入图片描述
解释:也是地址的交换,只不过是省去了指针的麻烦,直接将输入的变量进行取地址操作进行地址交换,因而提高效率

//C++中的参数传递,用传址(数组)实现求10个整数的最大数
#include<iostream>
using namespace std;
#define N 10
int max(int b[]){
      int i,n;
       n=b[0];
       for(i=1;i<N;i++)
	if(n<b[i]) n=b[i];
        return n;
}
void main ( ) {
	int a[10];
	int i,m;
	for(i=0;i<N;i++)
		cin>>a[i];
	m=max(a);
	cout<<"the max number is:"<<m;
}

输出结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值