当前位置: 代码迷 >> C语言 >> [求助]函数单向传值的问题
  详细解决方案

[求助]函数单向传值的问题

热度:134   发布时间:2007-10-22 21:39:58.0
[求助]函数单向传值的问题
为什么SWAP()的值不能传出来,应该如何改
#include <stdio.h>
main()
{
void swap(int x,int y);
int a,b;
a = 5;
b = 9;
if(a < b)swap(a,b);
printf("'a' is %d\n'b' is %d\n",a,b);
system("pause");
}
void swap(int x,int y)/*交换函数*/
{
int temp;
temp = x;
x = y;
y = temp;
}
/*swap()的值不能传出来*/

不用指针和数组,如何改才能把函数的值传出来
搜索更多相关的解决方案: 函数  int  传值  swap  temp  

----------------解决方案--------------------------------------------------------
以下是引用下雨浇花在2007-10-22 21:39:58的发言:
为什么SWAP()的值不能传出来,应该如何改
#include <stdio.h>
main()
{
void swap(int x,int y);
int a,b;
a = 5;
b = 9;
if(a < b)swap(a,b);
printf("'a' is %d\n'b' is %d\n",a,b);
system("pause");
}
void swap(int x,int y)/*交换函数*/
{
int temp;
temp = x;
x = y;
y = temp;
}
/*swap()的值不能传出来*/

不用指针和数组,如何改才能把函数的值传出来

不用指针和数组???你还想怎么改阿?


----------------解决方案--------------------------------------------------------
这是函数的生存周期问题
void swap(int x,int y)/*交换函数*/
{
int temp;
temp = x;
x = y;
y = temp;
}
这个函数在执行完后它的生存周期就完了,如果要交换要用指针来改变地址,才能的到实现!
----------------解决方案--------------------------------------------------------

[IMG]http://fm171.img.xiaonei.com/pic001/20071022/22/43/head_18374g169.jpg[/IMG]

图片太小了
#include <stdio.h>
static int a,b;
int main()
{
void swap(int x,int y);
//static int a,b;
a = 5;
b = 9;
if(a < b)swap(a,b);
printf("'a' is %d\n'b' is %d\n",a,b);
getchar();
//system("pause");
}
void swap(int x,int y)/*交换函数*/
{
int temp;
temp = x;
x = y;
y = temp;
a=x;
b=y;

}
/*swap()的值不能传出来*/



现在可以了

[此贴子已经被作者于2007-10-22 22:45:47编辑过]


----------------解决方案--------------------------------------------------------
好像还是不能得到正确结果。。。。。。。。。。。
----------------解决方案--------------------------------------------------------
以下是引用canyue在2007-10-22 22:44:15的发言:

[IMG]http://fm171.img.xiaonei.com/pic001/20071022/22/43/head_18374g169.jpg[/IMG]

图片太小了
#include <stdio.h>
static int a,b;
int main()
{
void swap(int x,int y);
//static int a,b;
a = 5;
b = 9;
if(a < b)swap(a,b);
printf("'a' is %d\n'b' is %d\n",a,b);
getchar();
//system("pause");
}
void swap(int x,int y)/*交换函数*/
{
int temp;
temp = x;
x = y;
y = temp;
a=x;
b=y;

}
/*swap()的值不能传出来*/



现在可以了


如果这样的话,我不用swap()函数好了,直接在主函数里比较好了


----------------解决方案--------------------------------------------------------
以下是引用yangzhifu在2007-10-22 22:22:58的发言:
这是函数的生存周期问题
void swap(int x,int y)/*交换函数*/
{
int temp;
temp = x;
x = y;
y = temp;
}
这个函数在执行完后它的生存周期就完了,如果要交换要用指针来改变地址,才能的到实现!

没有其他办法了吗?
----------------解决方案--------------------------------------------------------
值传递又不用引用的话应该就不行了.
----------------解决方案--------------------------------------------------------

#include "stdio.h"
void swap(int x,int y);

main()
{
int a,b;
a = 5;
b = 9;
if(a < b)swap(a,b);
printf("'a' is %d\n'b' is %d\n",a,b);
system("pause");

}
void swap(int x,int y)/*交换函数*/
{
int temp;
temp = x;
x = y;
y = temp;
}

这样不行吗??


----------------解决方案--------------------------------------------------------
传值,形参变不影响实参,引用则,一变都变
----------------解决方案--------------------------------------------------------
  相关解决方案