#include void fun(int a,int b) {int t; t=a;a=b;b=t; } main()

问题描述:

#include void fun(int a,int b) {int t; t=a;a=b;b=t; } main() {int c[6]={1,2,3,4,5,6},i;
for(i=0;i
1个回答 分类:综合 2014-09-19

问题解答:

我来补答
还是1 2 3 4 5 6啊传值调用,传递后的变量在栈上面已经是新的变量了,交换不影响原来的值
再问: 若是想要值交换又该如何编程
再答: void fun (int *a, int *b){int t=*a; *a=*b;*b=t;} ... fun(&c[i], & c[i+1]) 这样得到的是2 1 4 3 6 5
再问: 是说传递给形参的量其实是实参在栈上的副本吗?用指针即能交换,也就是说即使是对副本指针操作也能操作到其实际指的量。。。。说的可能复杂了点,因为一直搞不明白,请见谅
再答: 是说传递给形参的量其实是实参在栈上的副本吗?是的 从地址的角度看就简单多了,为什么传值调用不可以?传值调用将值传递给栈上面另外地址空间的变量了 为什么传递指针可以?虽然指针也是在栈上面,但是这个栈空间里面实际存放的是要修改变量的地址,按图索骥的话通过地址就可以修改原先变量的值了
 
 
展开全文阅读
剩余:2000
下一页:例6求步骤