首先看一段代码(实现两个变量值的互换):
一、无法实现互换的程序:
1 #include<iostream> 2 using namespace std; 3 void swap(int a,int b) 4 { 5 int temp; 6 temp=a; 7 a=b; 8 b=temp; 9 } 10 int main() 11 { 12 int i=3,j=5; 13 swap(i,j); 14 cout<<i<<","<<j<<endl; 15 return 0; 16 }
二、实现互换的程序:
1 一、 2 //预先申明函数,顺序执行 3 #include<iostream> 4 using namespace std; 5 void swap();//函数声明 6 int main() 7 { 8 int i=3,j=5; 9 swap(i,j); 10 cout<<i<<","<<j<<endl; 11 return 0; 12 } 13 void swap(int a,int b) 14 { 15 int temp; 16 temp=a; 17 a=b; 18 b=temp; 19 } 20 21 二、 22 /*传值方式调用: 23 调用函数时把变量i和j的地址传送给形参(指针变量)p1和p2, 24 因此*p1/*p2和i/j为同一内存单元. 25 作为一种方法,在解决实际问题时比较麻烦。 26 */ 27 #include<iostream> 28 using namespace std; 29 void swap(int *p1,int *p2) 30 { 31 int temp; 32 temp=*p1; 33 *p1=*p2; 34 *p2=temp; 35 } 36 int main() 37 { 38 int i=3,j=5; 39 swap(&i,&j); 40 cout<<i<<","<<j<<endl; 41 return 0; 42 } 43 44 三、 45 /*引用方式调用: 46 在调用函数时,实参i、j传给形参a、b的是实参的地址; 47 使形参a/b和变量i/j具有同样的地址,从而共享同一单元。 48 */ 49 #include<iostream> 50 using namespace std; 51 void swap(int &a,int &b) 52 //此处a、b不是它们的地址,而是对整型变量的引用 53 { 54 int temp; 55 temp=a; 56 a=b; 57 b=temp; 58 } 59 int main() 60 { 61 int i=3,j=5; 62 swap(i,j); 63 cout<<i<<","<<j<<endl; 64 return 0; 65 }
变量的引用在程序中有解释。以上为初学者的理解,诚请大神指教!