#include <stdio.h>
#include <stdlib.h>
//指针变量作为函数参数
//交换两个指针变量所指对象的值,在函数内部可以修改形参指针变量所指的变量的值,并且影响到实参。
void chagetValue(int *p1,int *p2)
{
int p;
p=*p1;
*p1=*p2;
*p2=p;
}
//交换两个指针的指向,也是两个指针变量的值(在函数内部修改形参指针的值(指向),将不影响实参,也就是无效)
void chagetPointer(int *p1,int *p2)
{
int *p;
p=p1;
p1=p2;
p2=p;
}
int main()
{
int a=10;
int b=20;
int *p1=&a,*p2=&b;
chagetPointer(p1,p2);
printf("调用交换两个指针的值的函数:\n");
printf("a=%d,b=%d\n",a,b);
printf("&p1=%d,*p1=%d\n",&p1,*p1);
printf("&p2=%d,*p2=%d\n",&p2,*p2);
chagetValue(p1,p2);
printf("调用交换两个指针变量所指的对象的值:\n");
printf("a=%d,b=%d\n",a,b);
printf("&p1=%d,*p1=%d\n",&p1,*p1);
printf("&p2=%d,*p2=%d\n",&p2,*p2);
printf("Hello world!\n");
return 0;
}
程序运行结果:
调用交换两个指针的值的函数:
a=10,b=20
&p1=2686740,*p1=10
&p2=2686736,*p2=20
调用交换两个指针变量所指的对象的值:
a=20,b=10
&p1=2686740,*p1=20
&p2=2686736,*p2=10
Hello world!
Process returned 0 (0x0) execution time : 0.804 s
Press any key to continue.