码迷,mamicode.com
首页 > 编程语言 > 详细

c++——参数传递

时间:2019-11-27 22:00:52      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:形参   eval   按引用传递   ios   name   play   数据传递   tor   它的   

  • 实参通常是通过值传递给函数的,这意味着形参接收的只是发送给它们的值的副本,它们存储在函数的本地内存中。对形参值进行的任何更改都不会影响原始实参的值。
  • 通常,当信息被传递给一个函数时,采用按值传递的方式,这意味着形参接收的是传递给它的值的副本。如果形参的值在函数内部被改变,那么它对原始实参是没有影响的
  • 有时候可能会希望一个函数能够改变正在调用中的函数(即调用它的函数)中的一个值,这可以通过引用传递的方式来完成
  • 当使用引用变量作为形参时,它将变为实参列表中相应变量的别名,对形参进行的任何更改都将真正更改正在调用它的函数中的变量。当以这种方式将数据传递给形参时,该实参被称为按引用传递
 1 #include <iostream>
 2 using namespace std;
 3 // Function prototype. The parameter is a reference variable.
 4 void doubleNum(int &SrefVar);
 5 int main()
 6 {
 7     int value = 4;
 8     cout << "In main, value is " << value << endl;
 9     cout << "Now calling doubleNum..." << endl;
10     doubleNum(value);
11     cout << "Now back in main, value is "<< value << endl;
12     return 0;
13 }
14 void doubleNum (int &SrefVar)
15 {
16     SrefVar *= 2;
17 }

技术图片

  •  通过返回值改变实参的值
 1 #include <iostream>
 2 using namespace std;
 3 //Function prototypes
 4 void getNum(int &);
 5 int doubleNum(int);
 6 int main()
 7 {
 8     int value;
 9     // Call getNum to get a number and store it in value
10     getNum(value);
11     value = doubleNum(value);
12     // Display the resulting number
13     cout << "That value doubled is " << value << endl;
14     return 0;
15 }
16 void getNum(int &userNum)
17 {
18     cout << "Enter a number: ";
19     cin >> userNum;
20 }
21 int doubleNum (int number)
22 {
23     return number *2;
24 }

技术图片

  • 引用变量其实就是原始变量的别名,该原始变量用作实参。这样的设计使得函数可以访问原始实参变量,从而允许它更改变量的内容
  • 应该仅在绝对需要时才使用引用变量。任何时候允许一个函数来改变函数之外的变量,其实都是在创建潜在的调试问题
  • 按引用传递实参还有一种替代方法,那就是使用指针作为函数参数
 1 #include <iostream>
 2 using namespace std;
 3 //Function prototypes
 4 void getNumber(int *);
 5 void doubleValue(int *);
 6 int main()
 7 {
 8     int number;
 9     //Call getNumber and pass the address of number
10     getNumber(&number);
11     // Call doubleValue and pass the address of number
12     doubleValue(&number);
13     // Display the value in number
14     cout << "That value doubled is " << number << endl;
15     return 0;
16 }
17 void getNumber(int *input)
18 {
19     cout << "Enter an integer number: ";
20     cin >> *input;
21 }
22 void doubleValue(int *val)
23 {
24     *val *= 2;
25 }

技术图片

 

 

 

 

c++——参数传递

标签:形参   eval   按引用传递   ios   name   play   数据传递   tor   它的   

原文地址:https://www.cnblogs.com/cxc1357/p/11945728.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!