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

来源:互联网 发布:广州恒大淘宝球员名单 编辑:程序博客网 时间:2024/06/09 18:59

   今天做了一道题,不能使用全局变量,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 0
原创粉丝点击