C语言程序中,没有返回值的函数如何把运算结果返回给主函数的?如下面程序:

voidswap(int*a,int*b){intt;t=*a;*a=*b;*b=t;}main(){intx=10,y=20;printf("(1)x=%dy=%d\n... void swap(int*a,int*b)
{
int t;
t=*a; *a=*b; *b=t;
}
main()
{
int x=10,y=20;
printf("(1)x=%d y=%d\n",x,y);
swap(&x,&y);
printf("(2)x=%d y=%d\n",x,y);
}
结果是
展开
 我来答
洛雨曦1125
2012-09-16 · TA获得超过1345个赞
知道小有建树答主
回答量:295
采纳率:100%
帮助的人:92.2万
展开全部
void swap(int*a,int*b)
{
int t;
t=*a; *a=*b; *b=t;
}
main()
{
int x=10,y=20;
printf("(1)x=%d y=%d\n",x,y);
swap(&x,&y);
printf("(2)x=%d y=%d\n",x,y);
}
这个输出结果是:(1)x=10 y=20
(2)x=20 y=10
这个是址传递,如果是值传递值肯定不会传回给主函数,而地址传递要看交换的是谁,可能会传回也可能不回。
这个题:把x的地址和y的地址给指针变量a,b,就说明a 指向了x,b指向了y,在swap函数里是把数据进行交换了也就是说把x\y交换了(*a表示取a所指变量的内容,*b同理!)执行完之后输出x,y就是交换后的
huohuo411
2012-09-16 · TA获得超过404个赞
知道小有建树答主
回答量:218
采纳率:0%
帮助的人:124万
展开全部
#include <stdio.h>
void swap(int*a,int*b)
{
int t;
t=a; a=b; b=t;
printf("a=%d b=%d\n",*a,*b);//试试看a,b
}
main()
{
int x=10,y=20;
printf("(1)x=%d y=%d\n",x,y);
swap(&x,&y);
printf("(2)x=%d y=%d\n",x,y);
}

结果,xy仍然是10,20
原因很简单,因为swap函数里交换的只是指针ab指向的地址,a指向了y,b指向了x。
原题,是因为swap函数里交换的ab指向地址的内容,也就是将xy的值交换了!
这种题目,请多多调试理解~~
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
PLigt
2012-09-16 · TA获得超过677个赞
知道小有建树答主
回答量:490
采纳率:0%
帮助的人:375万
展开全部
通过指针,参数接收一个地址过来,修改此地址的内容就可以实现结果的返回
追问
那如果
void swap(int*a,int*b)
{
int t;
t=a; a=b; b=t; (不是内容交换)
}
main()
{
int x=10,y=20;
printf("(1)x=%d y=%d\n",x,y);
swap(&x,&y);
printf("(2)x=%d y=%d\n",x,y);
}

这样结果会是什么?
追答
t=a; a=b; b=t; 这是非法的,t是整型,而 a b 是指针
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
陈新为111
2012-09-16
知道答主
回答量:47
采纳率:0%
帮助的人:21.2万
展开全部
传址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
try_ok
2012-09-16 · TA获得超过211个赞
知道小有建树答主
回答量:423
采纳率:0%
帮助的人:257万
展开全部
通过指针就可以啊,你那样就可以啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式