函数的值传递与指针

1.形参只是实参的拷贝本(形参的改变并不能影响实参)

  

 1 #include <iostream>
 2 #include <algorithm>
 3 using namespace std;
 4 
 5 void Swap(int a, int b){
 6     int c = a;
 7     a = b;
 8     b = c;
 9 }
10 
11 int main(){
12     int a, b;
13     a = 4;
14     b = 10;
15     cout << a << " " << b << endl;
16     Swap(a, b);
17     cout << a << " " << b << endl;
18     system("pause");
19     return 0;
20 }

2.指针传递

  指针传递,是把实参所在的地址传递出去,所以那时函数可以直接对实参进行改变

 1 #include <iostream>
 2 #include <algorithm>
 3 using namespace std;
 4 
 5 void Swap(int *a, int *b){
 6     int c = *a;
 7     *a = *b;
 8     *b = c;
 9 }
10 
11 int main(){
12     int a, b;
13     a = 4;
14     b = 10;
15     cout << a << " " << b << endl;
16     Swap(&a, &b);
17     cout << a << " " << b << endl;
18     system("pause");
19     return 0;
20 }

3.引用

 1 #include <iostream>
 2 #include <algorithm>
 3 using namespace std;
 4 
 5 void Swap(int &a, int &b){
 6     int c = a;
 7     a = b;
 8     b = c;
 9 }
10 
11 int main(){
12     int a, b;
13     a = 4;
14     b = 10;
15     cout << a << " " << b << endl;
16     Swap(a, b);
17     cout << a << " " << b << endl;
18     system("pause");
19     return 0;
20 }

  (&在此时不是求地址运算,而是标识作用)

(1)引用不是值,所以她并不占用内存;

(2)引用其实就是变量另外的一个名字 皮皮虾 小屁屁

(3)引用声明方式:

    类型标识符 &引用名=目标变量名

  3.1 类型标识符是指目标变量的类型
  3.2 &在此不是求地址运算,而是标识作用
  3.3 '='后的目标变量名是引用的目标,声明引用时,必须同时对他初始化,否则产生编译错误
(4) 不能建立数组引用,因为数组是一个由若干个单元组成,所以无法建立数组的引用

(5)声明一个引用后,就可以像变量一样可以使用了 ,其值与变量的值同步

  引用的用处 : 作为函数的参数和函数的返回值

(6)引用作为函数参数

  形参就是实参的一个别名!

(7) 引用作为函数的返回值
  7.1 以引用作为返回值,定义函数的时候在函数名前面加&符号
  7.2 用引用返回函数值得 最大好处(就是在内存中不产生被返回值的副本)
  7.3被函数返回的引用只是作为一个临时变量出现,而没有被赋予一个实际的变量

 

--------------------------------------------------------------------------------------------------------------------------

4.指针与引用的区别

指针就是一个变量,和其他类型一样,它是一个占用四个字节的变量(32位机), 与其他变量不同的是就是他变量值是一个地址,指向内存的另外一个地方

而引用则是变量的一个别名

一个指针变量可以指向空,表示他不指向任何变量的地址,但是引用必须在声明的时候就得和一个已经存在的变量相绑定.

 

posted @ 2017-10-11 21:01  ouyang_wsgwz  阅读(249)  评论(0编辑  收藏  举报