函数调用-swap交换举例
在C语言学习中,发现不使用指针而直接调用函数容易出现错误。
先附上不使用指针的代码及结果:
#include<stdio.h>
void swap(int i,int j){
int temp;
temp=i;i=j;j=temp;
printf("swap中的i=%d,j=%d\n",i,j);
}
int main(){
int i = 4,j = 6;
swap(i,j);
printf("i=%d,j=%d\n",i,j);
}
输出结果:
可见,swap中的数据完成交换,但主函数中未改变。
接下来附上使用指针的代码及结果:
#include<stdio.h>
void swap(int *p1,int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
int main()
{
int a,b;
while(scanf("%d %d",&a,&b)!=EOF){
printf("交换前a,b的值为:");
printf("a=%d,b=%d\n",a,b);
swap(&a,&b);
printf("交换后a,b的值为:");
printf("a=%d,b=%d\n",a,b);
}
return 0;
}
输出结果:
主函数完成交换,测试结果正确。