标题:[求助]函数单向传值的问题
只看楼主
下雨浇花
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2007-9-19
结帖率:100%
 问题点数:0 回复次数:15 
[求助]函数单向传值的问题
为什么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
风的声音
Rank: 1
等 级:新手上路
帖 子:128
专家分:0
注 册:2007-3-27
得分:0 
以下是引用下雨浇花在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()的值不能传出来*/

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

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


一念心清净,莲花处处开。 一花一净土,一土一如来。
2007-10-22 21:52
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
得分:0 
这是函数的生存周期问题
void swap(int x,int y)/*交换函数*/
{
int temp;
temp = x;
x = y;
y = temp;
}
这个函数在执行完后它的生存周期就完了,如果要交换要用指针来改变地址,才能的到实现!

方寸之内,剖天下; 方坛之内,析自我;
2007-10-22 22:22
canyue
Rank: 1
等 级:新手上路
威 望:1
帖 子:159
专家分:0
注 册:2007-10-4
得分:0 

[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编辑过]


别看我现在只有这么亮,总有一天会月圆的!
2007-10-22 22:44
sunpy
Rank: 1
来 自:厦门
等 级:新手上路
帖 子:118
专家分:0
注 册:2007-10-1
得分:0 
好像还是不能得到正确结果。。。。。。。。。。。

荀子《劝学》:“不积跬步,无以至千里;不积小流,无以成江海.”
2007-10-23 07:45
下雨浇花
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2007-9-19
得分:0 
以下是引用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()函数好了,直接在主函数里比较好了


花不浇,长不大;雨不下,不浇花...
2007-10-23 12:38
下雨浇花
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2007-9-19
得分:0 
以下是引用yangzhifu在2007-10-22 22:22:58的发言:
这是函数的生存周期问题
void swap(int x,int y)/*交换函数*/
{
int temp;
temp = x;
x = y;
y = temp;
}
这个函数在执行完后它的生存周期就完了,如果要交换要用指针来改变地址,才能的到实现!

没有其他办法了吗?


花不浇,长不大;雨不下,不浇花...
2007-10-23 12:39
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 
值传递又不用引用的话应该就不行了.

倚天照海花无数,流水高山心自知。
2007-10-23 12:57
天人和一
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-10-11
得分:0 

#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;
}

这样不行吗??

2007-10-23 13:25
blosaa
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-10-17
得分:0 
传值,形参变不影响实参,引用则,一变都变
2007-10-23 14:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-179901-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.327313 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved