函数的值传递与指针
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位机), 与其他变量不同的是就是他变量值是一个地址,指向内存的另外一个地方
而引用则是变量的一个别名
一个指针变量可以指向空,表示他不指向任何变量的地址,但是引用必须在声明的时候就得和一个已经存在的变量相绑定.