4 description: C++中值传递、引用传递、指针传递的区别
10 <pre class="prettyprint">
13 void passValue(int x) // 值传递
16 std::cout << "passValue() -- x = " << x << std::endl;
19 void passReference(int &x) // 引用传递,只是在定义函数的时候,参数需要加&说明是接收参数的引用,而调用的时候和值传递一样,只填参数
22 std::cout << "passReference() -- x = " << x << std::endl;
25 void passPointer(int *x) // 指针传递,定义函数的时候,需要说明接收的是参数的指针,调用的时候使用取地址符&
27 (*x)++; // 先取得地址对应的值再执行++操作
28 std::cout << "passPointer() -- x = " << *x << std::endl;
35 std::cout << "x = " << x << std::endl;
37 std::cout << "x = " << x << std::endl;
39 std::cout << "x = " << x << std::endl;
41 std::cout << "x = " << x << std::endl;
47 <pre class="prettyprint">
49 passValue() -- x = 11 // 在passValue()函数中++后输出11
50 x = 10 // 经过值传递后原值没有发生改变,说明值传递不会改变参数本身的属性
51 passReference() -- x = 11 // 在passReference()函数中++后输出11
52 x = 11 // 经过引用传递后原值发生了变化,说明引用传递会改变参数本身的属性
53 passPointer() -- x = 12 // 在passPointer()函数中++后输出12
54 x = 12 // 经过指针传递后原值也发生了变化,说明指针传递也会改变参数本身的属性,与引用传递不同的是调用函数需要使用&取地址符,并按指针的操作方式对参数进行操作。