首页 > 其他 > 详细

函数之间的形参传递

时间:2020-04-05 02:19:53      阅读:68      评论:0      收藏:0      [点我收藏+]

1传值

 1 int test(int x)
 2 {
 3     x = x + 1;
 4     cout << x << endl;
 5     cout << &x << endl;
 6     return x;
 7 }
 8 
 9 int main()
10 {
11      int a = 3;
12      test(a);
13      cout << a<< endl;
14      cout << &a <<endl;
15      return 0;
16 }

运行结果

4
000000EB483BFA70
3
000000EB483BFA94

即:调用函数在栈中分配给形参储存单元 ,并赋值,形参的运算与实参无关

 

2传址

 1 int test(int *x)
 2 {
 3     *x = *x + 1;
 4     cout << *x << endl;
 5     cout << &x << endl;
 6     return *x;
 7 }
 8 
 9 int main()
10 {
11      int a = 3;
12      test(&a);
13      cout << a<< endl;
14      cout << &a <<endl;
15      return 0;
16 }

运行结果

4
0000002BF814F980
4
0000002BF814F9A4

即:调用函数在栈中分配给指向实参的指针,对指针指向的单元进行运算,会改变实参取值

3传引用

 1 int test(int &x)
 2 {
 3     x = x + 1;
 4     cout << x << endl;
 5     cout << &x << endl;
 6     return x;
 7 }
 8 
 9 int main()
10 {
11      int a = 3;
12      test(a);
13      cout << a<< endl;
14      cout << &a <<endl;
15      return 0;
16 }

运行结果

4
000000D1FF94F964
4
000000D1FF94F964

即:在调用函数中引用了实参a,x相当于实参a的另一个标号,没有在栈中分配内存,对形参x操作相当于对实参a操作,并节约了栈的操作

2020.4.4

 

函数之间的形参传递

原文:https://www.cnblogs.com/xiaofengyu96/p/12635471.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!