子函数没有返回值为什么也能对主程序的值产生影响

比如这个程序:#include<stdio.h>voidfun(int*p1,int*p2){intt;t=*p1;*p1=*p2;*p2=t;}voidmain(){i... 比如这个程序:
#include<stdio.h>
void fun(int *p1, int *p2)
{int t;
t=*p1; *p1=*p2; *p2=t;
}
void main( )
{
int x,y;
int *p1,*p2;
scanf("%d %d",&x,&y);//输入6 2
p1=&x; p2=&y;
if(x>y) fun(p1,p2);
printf("x=%d,y=%d", x, y);
}
为什么子程序里没有return也能对主程序产生影响
展开
 我来答
百度网友d1ed4a9430
2012-01-03 · TA获得超过1.6万个赞
知道大有可为答主
回答量:6236
采纳率:73%
帮助的人:3514万
展开全部
fun(int *p1, int *p2)
函数的参数是两个指针类型的变量,存储的是地址,其实这两个变量的值都没有改变,但是他们所对应的存储空间里面的值却变化了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jzp1
2012-01-03 · TA获得超过425个赞
知道小有建树答主
回答量:391
采纳率:50%
帮助的人:144万
展开全部
你的子程序或者函数:fun因为参数是指针类型,在内部交换了外部传入的实参:x与y
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
微界度玺0E
2012-01-03 · TA获得超过105个赞
知道答主
回答量:56
采纳率:100%
帮助的人:49.7万
展开全部
你的子函数 传递的是变量的地址
传递地址在子函数中修改了是会影响到主函数的内容的
重点是你传递的事什么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
孤独J潮流
2012-01-03 · TA获得超过366个赞
知道小有建树答主
回答量:404
采纳率:0%
帮助的人:234万
展开全部
因为通过指针找到了主函数的数据地址,并进行了修改
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式