指针变量作为函数参数——实现地址传递
特点:共享存储单元,“双向”传递
例: 将两个数从大到小输出
(不用指针)
#include <stdio.h>
swap(int x, int y)
{ int temp;
temp=x;
x=y;
y=temp;
}
main()
{ int a,b;
scanf("%d%d",&a,&b);
if(a<b)
swap(a,b);
printf("\n%d,%d\n",a,b);
}
若输入:5 9
运行结果:5, 9
为什么呢?
因为当交互值是在swap()函数中交换的,当main函数调用swap()函数结束后,swap()函数分配的变量都被清除。所以a,b还是原来的值/
例 输入两个数,按从大到小输出
(用指针)
#include <stdio.h>
swap(int *p1, int *p2)
{ int p;
p=*p1;
*p1=*p2;
*p2=p;
}
main()
{ int a,b;
int *pointer_1,*pointer_2;
scanf("%d%d",&a,&b);
pointer_1=&a;
pointer_2=&b;
if(a<b)
swap(pointer_1,pointer_2);
printf("\n%d,%d\n",a,b);
}
若输入:5 9
运行结果:9, 5
因为swap()传的参数是指针,指针能接受变量的地址,指针指向变量的地址,所以能改变变量的值。