关于C++函数调用(返回)传值的思考!

   今天做了一道题,不能使用全局变量,main函数不能改变,只能改变调用函数,也用不了指针,所以想了许久,查找了许多资料,把过去知道的引用实践了。

   返回值只能返回一个值,但是需要的值可能需要有多了,那么我们就需要有传值,怎么把值传递到该去的位置,有三个办法。值传递,指针传递,引用传递。

1.值传递,就是main函数上的值没有变化,但是是在调用函数上的值的变化,与主函数上无关。就是调用函数已经把主函数上的值 做好了。

int fun(int a,int b)
{
  int c=a;
  a=b;
  b=c;
  cout<<a<<"  "<<b;
  return 0;
}
int main()
{
  int a,b;cin>>a>>b;
  fun(a,b);
  return 0;
}
2.指针传递,意思就是有另一个名字(新的东西)指向了原先想要改变的那个值,调用函数中,如果指针变化了,想要改变的那个值也一样会改变,同样在主函数是一样的,一个地址上的值改变了,指针会变,原先的定义的名字的值也会变。等于有个东西有俩个名字,常用的大名,不常有的小名,把一个名字指向的人变了,另一个名字也是被换了。

int fun(int *p, int *q)
{
	int c = *p;
	*p = *q;
	*q = c;
	return 0;
}
int main()
{
	int a=2, b=3;cin>>a>>b;
	int *p = &a, *q = &b;
	fun(&a, &b);//当指针上的*p,*q的值变了,指向那个地址的,a,b值同样也会变,同样,如果a,b值变,那么指针上的值也会变。
	return 0;
}
3.我感觉今天我实践的引用传递也是很重要,我开始喜欢上的这个办法。大概意思就是调用函数上的值变了,同样和指针差不多的是,main上的值也会变。

int fun(int &a,int &b)
{
   int c=a;
   a=b;
   b=c;
   return 0;
}
int main()
{
  int a,b;cin>>a>>b;
  fun(a,b);//当调用函数上的值变化了,那么主函数上的a,b值也是变化了。
  return 0;
}
调用函数的命名和主函数上的命名无关,即使是全局变量和局部变量一样,也是优先局部变量,所以每个函数的命名使用只在那一个限制的范围内!

关于更详细的资料的公式化的介绍:http://blog.csdn.net/the_fire/archive/2009/06/13/4267058.aspx

本文主要是自己对关于值传递的学习。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值