C++参数传递三种

C++里面三种参数传递方式

一、值传递

这种传递方式中,实参和形参是两个不同的地址空间,参数传递的实质是将原函数中变量的值,复制到被调用函数形参所在的存储空间中,这个形参的地址空间在函数执行完毕后,会被回收掉。整个被调用函数对形参的操作,只影响形参对应的地址空间,不影响原来函数中的变量的值,因为这两个不是同一个存储空间。

实例

复制代码
 1 #include <iostream>
 2 using namespace std;
 3 
 4 void swap(int a, int b) {
 5     int temp = a;
 6     a = b;
 7     b = temp;
 8 }
 9 
10 int main() {
11     int a = 1;
12     int b = 2;
13     cout << "交换前" << endl;
14     cout << "a = " << a << endl;
15     cout << "b = " << b << endl;
16     swap(a, b);
17     cout << "交换后" << endl;
18     cout << "a = " << a << endl;
19     cout << "b = " << b << endl;
20 
21 
22     return 0;
23 }
复制代码

二、引用传递

这种参数传递方式中,形参是引用类型变量,其实就是实参的一个别名,在被调用函数中,对引用变量的所有操作等价于对实参的操作,这样,整个函数执行完毕后,原先的实参的值将会发生改变。

实例

复制代码
 1 #include <iostream>
 2 using namespace std;
 3 
 4 void swap(int &a, int &b) {
 5     int temp = a;
 6     a = b;
 7     b = temp;
 8 }
 9 
10 int main() {
11     int a = 1;
12     int b = 2;
13     cout << "交换前" << endl;
14     cout << "a = " << a << endl;
15     cout << "b = " << b << endl;
16     swap(a, b);
17     cout << "交换后" << endl;
18     cout << "a = " << a << endl;
19     cout << "b = " << b << endl;
20 
21 
22     return 0;
23 }
复制代码

三、指针传递(地址传递)

这种参数传递方式中,实参是变量的地址,形参是指针类型的变量,在函数中对指针变量的操作,就是对实参(变量地址)所对应的变量的操作,,函数调用结束后,原函数中的变量的值将会发生改变。

实例

复制代码
 1 #include <iostream>
 2 using namespace std;
 3 
 4 void swap(int *a, int *b) {
 5     int temp = *a;
 6     *a = *b;
 7     *b = temp;
 8 }
 9 
10 int main() {
11     int a = 1;
12     int b = 2;
13     cout << "交换前" << endl;
14     cout << "a = " << a << endl;
15     cout << "b = " << b << endl;
16     swap(&a, &b);
17     cout << "交换后" << endl;
18     cout << "a = " << a << endl;
19     cout << "b = " << b << endl;
20 
21 
22     return 0;
23 }
复制代码

猜你喜欢

转载自blog.csdn.net/csw19970124/article/details/80802578