传值——实参形参

函数修改的是副本的值,实参的值不变

#include <iostream.h>
void swap(float m,float n)
{
	float temp;
	temp=m;
	m=n;
	n=temp;
} 
int main()
{
	float a,b;
	cin>>a>>b;
	swap(a,b);
	cout<<"输出a="<<a<<endl<<"输出b="<<b<<endl;
	return 0;
}

//结果如下
3
4
输出a=3
输出b=4

传地址方式——指针变量作为参数

形参变化影响实参

#include <iostream.h>
void swap(float *m,float *n)
{
	float t;
	t=*m;
	*m=*n;
	*n=t;
} 
int main()
{
	float a,b,*p1,*p2;
	cin>>a>>b;
	p1=&a;p2=&b;
	swap(p1,p2);
	cout<<"输出a="<<a<<endl<<"输出b="<<b<<endl;
	return 0;
}

//结果如下
3
4
输出a=4
输出b=3

形参变化不影响实参??

#include <iostream.h>
void swap(float *m,float *n)
{
	float *t;
	t=m;
	m=n;
	n=t;
} 
int main()
{
	float a,b,*p1,*p2;
	cin>>a>>b;
	p1=&a;p2=&b;
	swap(p1,p2);
	cout<<"输出a="<<a<<endl<<"输出b="<<b<<endl;
	return 0;
}

传地址方式——引用类型作为参数

引用:它用来给一个对象提供一个代替的名字

解释:j是一个引用类型,代表i的一个代替代名。i值改变时,j值也跟着改变,所以会输出。

#include <iostream.h>
int main()
{
	int i=5;
	int &j=i;
	i=7;
	cout<<"输出i="<<i<<endl<<"输出j="<<j<<endl;
	return 0;
}

//结果

输出i=7
输出j=7

传地址方式——引用类型作参数

#include <iostream.h>
void swap(float &m,float &n)
{
	float t;
	t=m;
	m=n;
	n=t;
} 
int main()
{
	float a,b;
	cin>>a>>b;
	swap(a,b);
	cout<<"输出a="<<a<<endl<<"输出b="<<b<<endl;
	return 0;
}

//结果

3
4
输出a=4
输出b=3

引用类型作形参的三点说明

  • 传递引用给函数与传递指针的效果是一样的,形参变化实参也发生变化
  • 引用类型作形参,在内存中并没有产生实参的副本,它直接对实参操作;而一-般变量作参数,形参与实参就占用不同的存储单元,所以形参变量的值是实参变量的副本。因此,当参数传递的数据量较大时,用引用比用一般变量传递参数的时间和空间效率都好。
  • 指针参数虽然也能达到与使用引用的效果,但在被调函数中.需要重复使用”*指针变量名”的形式进行运算,这很容易产生错误且程序的阅读性较差;另一-方面,在主调函数的调用点处,必须用变量的地址作为实参

传地址方式——数组名作参数

传递的是数组的首地址

对形参数组所做的任何改变都将反映到实参数组中

#include <iostream.h>
void sub(char);
void main (void)
{
	char a[10]="hello";
	sub(a);
	cout<<a<<endl;
} 
void sub(char b[])
{
	b[]="world"; 
}

例子:用数组函数的参数,求10个整数的最大数

#include <iostream>
#define N 10
int max(int a[]);
int 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;
}
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;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值