指针传参

(1)传值

 1 #include<stdio.h>
 2 int main()
 3 {
 4       int a=1;
 5       int b=2;
 6       int swap(int x,int y)
 7      {    
 8            int temp;
 9            temp=x;
10            x=y;
11            y=temp;
12      }
13       swap(a,b);
14       printf("%d,%d\n",a,b);
15       return 0;
16 }
17  

 

 

输出的值为:a=1,b=2。我们可以看到,交换数值的目的并没有达到,这是因为函数实现的是形参x和y的交换,并不会影响到实参a和b。

(2)传地址

 1 #include<stdio.h>
 2 int main()
 3 {
 4    int a=1;
 5    int b=2;
 6    void swap(int* x,int* y)
 7    {
 8       int temp;
 9       temp=*x;
10       *x=*y;
11       *y=temp;
12    }
13    swap(&a,&b);
14    printf("%d,%d\n",a,b);
15    return 0;
16 }

 输出的值为:a=2,b=1。我们可以看到,交换数值的目的达到了,与上一段代码的区别是本段代码传的参数是变量a,b的地址,通过指针实现了值交换。