#include <stdio.h>
void change (int x,int y)
{int temp=0;//定义一个第三者进行交换
temp=x;
x=y;
y=temp;
}
int main()
{int a=12;
int b=13;
printf("交换前是x=%d y=%d",a,b);
change(a,b);
printf("交换后是x=%d y=%d",a,b);
return 0;
}
#include <stdio.h>
void change (int *x,int *y)
{int temp=0;//定义一个第三者进行交换
temp=*x;
*x=*y;
*y=temp;
}
int main()
{int a=12;
int b=13;
printf("交换前是x=%d y=%d",a,b);
change(&a,&b);
printf("交换后是x=%d y=%d",a,b);
return 0;
}
函数参数传递分值传递和地址传递,两种传递方式其实都是单向的,实参不受形参的影响,也就是在子函数中形参值变化了,不影响实参的值。但是在地址传递过程中,地址指向内容变化了,对应实参值也就变化。
#include <stdio.h>
void change (int *x,int *y)
{int temp=0;//定义一个第三者进行交换
temp=*x;
*x=*y;
*y=temp;
}
int main()
{int a=12;
int b=13;
printf("交换前是x=%d y=%d",a,b);
change(&a,&b);
printf("交换后是x=%d y=%d",a,b);
return 0;
}
直接传值只是对数据的拷贝进行了处理,要传递指针才会处理原来的数据(操作同一片地址的数据)。