1 #include "stdafx.h" 2 #include <stdlib.h> 3 4 int Exchange(int *px,int *py) 5 { 6 int temp = *px; 7 *px = *py; 8 *py = temp; 9 printf("*px=%d, *py=%d ",*px,*py); 10 return 0 ; 11 } 12 int _tmain(int argc, _TCHAR* argv[]) 13 { 14 int a = 8; 15 int b = 46; 16 Exchange(&a,&b); 17 printf("a=%d, b=%d ",a,b); 18 19 system("pause"); 20 return 0; 21 }
或者也可以如下方式进行引用传递:
1 #include "stdafx.h" 2 #include <stdlib.h> 3 4 int Exchange(int &x,int &y) 5 { 6 int temp = x; 7 x = y; 8 y = temp; 9 printf("x=%d, y=%d ",x,y); 10 return 0 ; 11 } 12 int _tmain(int argc, _TCHAR* argv[]) 13 { 14 int a = 8; 15 int b = 46; 16 Exchange(a,b); 17 printf("a=%d, b=%d ",a,b); 18 19 system("pause"); 20 return 0; 21 }
下面代码就是值传递的例子:
1 #include "stdafx.h" 2 #include <stdlib.h> 3 4 int Exchange(int x,int y) 5 { 6 int temp = x; 7 x = y; 8 y = temp; 9 printf("x=%d, y=%d ",x,y); 10 return 0 ; 11 } 12 int _tmain(int argc, _TCHAR* argv[]) 13 { 14 int a = 8; 15 int b = 46; 16 Exchange(a,b); 17 printf("a=%d, b=%d ",a,b); 18 19 system("pause"); 20 return 0; 21 }
所以,与引用传递相对,值传递的代码格式只有一处是不同的,即在定义处:Exchange(int &x, int &y);在调用处都是一样的。
值传递的函数里操作的不是a,b 变量本身,只是将a,b 值赋给了x,y 函数里操作
的只是x,y 变量而不是a,b,显示a,b 的值不会被Exchange 函数所修改。
引用传递Exchange(a,b)函数里是用a,b 分别代替了x,y。函数里操作的就是a,b
变量的本身,因此a,b 的值可在函数里被修改的。
指针的指针:
1 //查找一个字符在字符串中的位置 2 3 #include "stdafx.h" 4 #include<stdlib.h> 5 #include<string.h> 6 7 void find(char array[],char search,char **ppa) 8 { 9 int i; 10 for(i = 0; *(array+1) != '