子函数没有返回值为什么也能对主程序的值产生影响
比如这个程序:#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也能对主程序产生影响 展开
#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也能对主程序产生影响 展开
4个回答
展开全部
fun(int *p1, int *p2)
函数的参数是两个指针类型的变量,存储的是地址,其实这两个变量的值都没有改变,但是他们所对应的存储空间里面的值却变化了。
函数的参数是两个指针类型的变量,存储的是地址,其实这两个变量的值都没有改变,但是他们所对应的存储空间里面的值却变化了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的子程序或者函数:fun因为参数是指针类型,在内部交换了外部传入的实参:x与y
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的子函数 传递的是变量的地址
传递地址在子函数中修改了是会影响到主函数的内容的
重点是你传递的事什么
传递地址在子函数中修改了是会影响到主函数的内容的
重点是你传递的事什么
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为通过指针找到了主函数的数据地址,并进行了修改
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询