C语言小问题
swap(intx,inty){inttemp;temp=x;x=y;y=temp;}为什么不能实现x和y值交换啊...
swap(int x,int y)
{int temp;
temp=x;
x=y;
y=temp;
}
为什么不能实现x和y值交换啊 展开
{int temp;
temp=x;
x=y;
y=temp;
}
为什么不能实现x和y值交换啊 展开
6个回答
展开全部
这样说吧
比如你的主函数里
int a=3;
int b=4;
swap(a,b);
楼主注意看
此时a=3,x=a=3,等于a的数值
所以此时a=3,x=3
同理
b=4,y=4.
而当你在自定义函数交换的时候,只是x和y交换
交换后x=4,y=3,而a,b没有发生任何变化
通过这个例子我们发现,传值不影响主函数的值
为什么指针可以改变呢
还是通过这个例子
int a=3,b=4;
int *p,*q;
p=&a,q=&b;
swap(p,q);
swap(int *x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
我们来分析一下,这时的p,x都指向a的地址
q,y都指向b的地址
当经过自定义函数的时候
a和b的值对调了一下。
还不清楚可以hi我
比如你的主函数里
int a=3;
int b=4;
swap(a,b);
楼主注意看
此时a=3,x=a=3,等于a的数值
所以此时a=3,x=3
同理
b=4,y=4.
而当你在自定义函数交换的时候,只是x和y交换
交换后x=4,y=3,而a,b没有发生任何变化
通过这个例子我们发现,传值不影响主函数的值
为什么指针可以改变呢
还是通过这个例子
int a=3,b=4;
int *p,*q;
p=&a,q=&b;
swap(p,q);
swap(int *x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
我们来分析一下,这时的p,x都指向a的地址
q,y都指向b的地址
当经过自定义函数的时候
a和b的值对调了一下。
还不清楚可以hi我
2009-08-17
展开全部
函数定义时参数表中的参数称为形式参数,简称形参,函数调用时参数表中的参数称为实际参数,简称实参,实参和形参之间的数据传递称为形实结合,通常情况下c语言是值传递,值传递是单向的,即参数的值只能由实参传递给形参,而不能反过来由形参传递给值参,也就是说,从被调用函数的角度来看,参数的值只能传入不能传出。值传递时实参可以是具体的数值、已经有值的变量和可求值的表达式,由于数值和变量都是表达市的一种,因此,值传递时实参本质上是表达式。当函数被调用时,系统首先对实参表达式球值,然后将值传递给形参,换过一种思路,值传递时,形参实际上是实参的一份拷贝,所以传递时不会改变外部变量实参的值
vc2008
#include "stdafx.h"
#include <stdio.h>
void swap(int &a,int &b)
{
int c;
c=a;
a=b;
b=c;
}
int main(int argc, _TCHAR* argv[])
{
int a,b;
scanf("%d%d",&a,&b);
swap(a,b);
printf("%d,%d",a,b);
while(1);
return 0;
}
vc2008
#include "stdafx.h"
#include <stdio.h>
void swap(int &a,int &b)
{
int c;
c=a;
a=b;
b=c;
}
int main(int argc, _TCHAR* argv[])
{
int a,b;
scanf("%d%d",&a,&b);
swap(a,b);
printf("%d,%d",a,b);
while(1);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C,c++语言里,在函数里的数据都是局部变量,当函数结束时,除了返回值外,其它的局部变量都自动消失了。注意,swap里的变量x,y与外部给的实参属于两个变量,被存放在不同的地址里,一次该变一个变量,当然不会改变另一个变量。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C语言的函数传参是按值传递的,就是在给函数传递变量或是常量的时候会在堆栈上创建一个副本,你修改的是副本的值,函数结束后全部销毁,怎么会对实际的x,y产生影响呢?
用指针吧如 贵族特困生 说得一样
用指针吧如 贵族特困生 说得一样
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
函数的X,Y是交换了,但外部的X,Y没交换
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询