函数的值传递和引用传递

 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) != '