这个无法交换数据。
创新互联建站专注于企业成都全网营销推广、网站重做改版、大冶网站定制设计、自适应品牌网站建设、H5页面制作、商城建设、集团公司官网建设、成都外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为大冶等各大城市提供网站开发制作服务。
C语言函数参数的基本规则是值传递,所以传递时只能实现实参向形参的单向的、值的传递。这就是为什么需要使用指针才能实现值交换的原因。
这是 C 语言 本身 特性 规定了 的。你只要记住 这点: 形参 必须用指针,这样才能把 通过 函数加工 后的 数值 带回来。通过函数 互换后 的a,b,才能被带回。
至于“为什么”,可以不去追究,它的理由 无非 是什么 地址啦,值啦之类,时间长了,自己会记混淆。
其它语言,例如 fortran 语言,不管形参是什么花样,都能带回。
#include
stdio.h
void
change(int
*a,int
*b){
int
m;
//定义一个临时变量
m
=
*a;
//把a指向的值放到m中
*a
=
*b;
//把b指向的值放到a指向的内存中
*b
=
m;
//把m中的值放到b指向的空间中,函数调用结束时m的生成周期也完了,就释放掉了
}
int
main(){
int
i
=
1;
int
j
=
2;
change(i
,j);
//函数调用
printf("%d,%d\n",i,j);
return
0;
}
#include stdio.h
int fun1(int a,int b)
{
return a/b;
}
int fun2(int a,int b)
{
return a%b;
}
void main()
{
int k;
int i1,i2,i3,i4;
printf("Please enter a data with 4 digits\n");
scanf("%d",k);
i1= fun1(k,1000);
k= fun2(k,1000);
i2= fun1(k,100);
k=fun2(k,100);
i3=fun1(k,10);
i4=fun2(k,10);
printf("%d %d %d %d\n",i1,i2,i3,i4);
getchar();
getchar();
}