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的值还是原来输入的值?? 展开
#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的值还是原来输入的值?? 展开
2个回答
展开全部
当计算机执行到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;
}
追问
虽然没解决我的问题,但还是感谢你这么认真!!谢谢!
追答
好吧。。
我的意思就是另外开辟了内存进行运算。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询