c语言中,一些关于子函数,参数的问题。。

首先,调用函数时,传入子函数的是参数值,在离开子函数是,内存释放,那请问当传入的值在子函数中做一系列的运算时,它的传入值是以什么作为变量的?举个例子吧,,自己都不知道怎么... 首先,调用函数时,传入子函数的是参数值,在离开子函数是,内存释放,那请问当传入的值在子函数中做一系列的运算时,它的传入值是以什么作为变量的?举个例子吧,,自己都不知道怎么表达
#include<stdio.h>
void swap(int x,int y);
main()
{
int a,b;
scanf("%d",a);
scanf("%d",b);
swap(a,b);\\调用函数swap交换a,b的值。
}

void swap(int x,int y)
{
int temp;
temp=x;
x=y;
y=temp;
}
输入 15 8
输出 15 8
也就是说 在函数swap中a,b的一系列改变并没有影响到main你函数中的a,b。
那请问在函数swap中a,b是不是重新分配了其他的内存(来进行运算)??
也就是说在swap中的a,b已经不是main中所谓的a,b了,,是吗??
如果不是,那怎么解释返回main时,a,b的值还是原来输入的值??
展开
 我来答
百度网友f94b897fc
2013-04-05 · TA获得超过189个赞
知道答主
回答量:88
采纳率:100%
帮助的人:115万
展开全部

这个问题你学到指针就明白了,

swap()函数中int x,y;都是重新开辟的内存的,

只是取了main函数中a,b的值而已本身和a,b是没有任何关系的。

你交换只是交换了新内存中x,y的值,而这块新内存中的值会在,函数执行完毕后被系统收回。

所以对main函数不造成任何影响。除非用指针变量直接对内存进行操作。

 

snowland
2013-04-05 · 知道合伙人软件行家
snowland
知道合伙人软件行家
采纳数:1229 获赞数:7313
多次参加C++算法类竞赛获奖。

向TA提问 私信TA
展开全部

当计算机执行到swap(a,b);

就会调用你的函数swap(int x,int y)

x就是你的a的值,y就是b的值。

但是执行完,就把内存释放掉了。

 

所以执行完之后并没有改变a,b的值。。

按引用传递更好吧

#include<stdio.h>

void swap(int &x,int &y);//加上了&

main(){

 int a,b;

 scanf("%d",&a);//没加&,不符合scanf()函数的规范

scanf("%d",&b);//亲,是这么写的斜杠,不是\\

swap(a,b);

printf("a=%d,b=%d",a,b);//增加了输出函数

void swap(int &x,int &y)//加上了&

{

 int temp;

 temp=x;

 x=y;

 y=temp;

}

追问
虽然没解决我的问题,但还是感谢你这么认真!!谢谢!
追答
好吧。。
我的意思就是另外开辟了内存进行运算。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式