C++编程基础二 02-传参数

 1 // C++函数和类 02-传参数.cpp: 定义控制台应用程序的入口点。
 2 //
 3 
 4 #include "stdafx.h"
 5 #include <iostream>
 6 #include <string>
 7 #include <array>
 8 #include <climits>
 9 #include <math.h>
10 using namespace std;
11 
12 //传值参数有两种方式:
13 //1.将实参的实际值复制给函数的形参。在这种情况下,修改函数内的形参对实参没有影响。
14 //2.将参数的地址复制给形参(指针)。因为指针使我们可以间接的访问它所指的对象,所以通过指针可以修改它所指对象的值。
15 int reset(int i);
16 void reset1(int *pi);
17 int min(int num1, int num2, int num3, int &max);
18 int reset(int i);
19 int main()
20 {
21     int num = 10;
22     cout << "reset:" << reset(num) << endl;
23     cout << "实参 num:" << num << endl;
24     cout << "num的地址:" << &num << endl;
25     reset1(&num);
26     cout << "reset1:" << num << endl;
27     cout << "num的地址:" << &num << endl;
28     //输出结果:
29     //reset:20
30     //实参 num : 10
31     //num的地址:0116FD38
32     //reset1 : 20
33     //num的地址:0116FD38
34 
35     reset(num);
36     cout << num << endl;
37 
38     int maxNum;
39     int minNum;
40     minNum = min(20, 15, 23, maxNum);
41     cout << "最大值为:" << maxNum << endl;
42     cout << "最小值为:" << minNum << endl;
43 
44     return 0;
45 }
46 
47 //传递实参的实际值,将实参的值拷贝给形参,函数体中修改的是形参的值。对实参不产生影响。
48 int reset(int i)
49 {
50     i *= 2;
51     return i;
52 }
53 //传递的实参的地址,修改*pi的值,就是修改指针实参指向的对象的值。修改pi的值,是修改形参存储的地址,不影响实参的地址。
54 void reset1(int *pi)//int类型的指针 形参
55 {
56     *pi *= 2; //修改的是形参储存的地址的值,不影响实参的地址。
57     pi = 0;
58     //*pi = 0; //错误的,因为pi指针的的地址已经被修改。
59 }
60 
61 //传引用参数:
62 //引用:引用是已定义的变量的别名。对于引用的操作实际上是作用在引用所引的对象上的。它们共用相同的内存空间,
63 //传引用参数:通过将引用变量用作参数,函数将使用原始数据,而不是其副本。
64 
65 //将引用变量作为参数,函数的使用时原始数据,而不是副本。
66 //对形参的修改其实就是对实参的修改。
67 
68 //用途:
69 //1.当某种类型不支持拷贝操作,或是需要拷贝的对象太大时,我们可以通引用形参来访问对象。
70 //2.当函数需要同时返回多个值时,可以使用引用形参来处理。
71 void rest(int &i) //&i是地址。
72 {
73     i = i * 2;
74 }
75 
76 //函数的返回为int类型,返回是3个数中的最小值
77 //定义了一个应用类型的参数,通过这个参数修改maxNum的值。
78 int min(int num1, int num2, int num3, int &max)
79 {
80     int temp1, temp2;
81     temp1 = num1 < num2 ? num1 : num2;
82     temp1 = temp1 < num3 ? temp1 : num3;
83 
84     temp2 = num1 > num2 ? num1 : num2;
85     temp2 = temp2 > num3 ? temp2 : num3;
86 
87     max = temp2;
88     return temp1;
89 }

猜你喜欢

转载自www.cnblogs.com/uimodel/p/9348516.html