c&c++函数的参数和返回值的传递终结版

   c++函数的参数和返回值的传递方式有三种:值传递、指针传递和引用传递。

   在这之前先看几个例子:    

一, int a=10;
    int b=a;
    b+=10;
    此时b是a的一个拷贝,改变b的值,a并不会受到影响,所以此时
    a=10;
    b=20;
二, int a=10;
int &b=a;
b+=10;
此时b是a的引用,对于b的任何操作都相当于对a进项操作,对于b的任何操作也都相当于对a的操作,a就是b,b就是a,所以此时a,b的值都为20。
三, int a=10;
int *b=&a;
*b+=10;
此时指针b指向a,修改*b就是修改a的值,所以此时a, *b的值都为20;
理解这些接下来就是小事了。

以下是“值传递”的示例程序。由于Func1函数体内的x是外部变量n的一份拷贝,改变x的值不会影响n, 所以n的值仍然是0。

void Func1(int x)

{

x = x + 10;

}

int n = 0;

Func1(n);

cout << “n = ” << n << endl; // n = 0

 

以下是“指针传递”的示例程序。由于Func2函数体内的x是指向外部变量n的指针,改变该指针的内容将导致n的值改变,所以n的值成为10。

void Func2(int *x)

{

(* x) = (* x) + 10;

}

int n = 0;

Func2(&n);

cout << “n = ” << n << endl; // n = 10

 

以下是“引用传递”的示例程序。由于Func3函数体内的x是外部变量n的引用,x和n是同一个东西,改变x等于改变n,所以n的值成为10。


void Func3(int &x)


{


x = x + 10;


}



int n = 0;


Func3(n);


cout << “n = ” << n << endl; // n = 10

 

如果这个时候还有点不懂,没关系

对于void Func1(int x)  使用Func1(n); 其实就相当于x=n;只是把n的值拷贝给了x,看文章开头,改变拷贝是改变不了n的值得;所以n的值没有变化。

接下来类似 对于void Func2(int *x)使用Func2(&n);就相当于  *x=&n,继续看文章头部的例子,这时候改变*x的值就相当于改变n的值,所以n的值会发生变化。

对于  void Func3(int &x) 使用 Func3(n); 相当于&x=n; 同上,此时改变x的值,n的值会变化。

 

 

 

原文链接: https://www.cnblogs.com/yalong/p/5674332.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    c&c++函数的参数和返回值的传递终结版

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/237072

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 下午5:16
下一篇 2023年2月13日 下午5:16

相关推荐