读书人

关于概念性有关问题求解

发布时间: 2012-09-12 09:21:30 作者: rapoo

关于概念性问题,求解
void swap1(int x ,int y)
{
int t;
t=x;
x=y;
y=t;

}
void swap2(int *x,int *y)
{
int t;
t=*x;
*x=*y;
*y=t;
}
main() 这是原题,按照我的理解,swap1后因为在函数里面交换了并没有返回到主函数中
{ 所以输出是 5 6
int a1=5,a2=6,*p1=&a1,*p2=&a2; 确认一下,这里是属于作用域的问题吗?
swap1(a1,a2);
printf("%d %d ",a1,a2); 第二次swap2后交换了地址里面的值输出是6 5
swap2(p1,p2);
printf("%d %d ",a1,a2);

现在有一个同学在swap1函数的形参改成void swap1(int &x ,int &y),他就可以交换啦,但我改回去就有错误,两台电脑。
想看下大家是如何分析的。

[解决办法]

C/C++ code
//================================================================= #include <iostream.h>  void swap1(int x ,int y)   {    int t;    t=x;    x=y;    y=t;    }void swap2(int *x,int *y)//传值传的是指针,实实在在会改变形参指向的值{    int t;    t=*x;    *x=*y;    *y=t;} void swap3(int &x,int &y) //传值传的是引用,实实在在会改变形参的值{    int t;    t=x;    x=y;    y=t;} void main(){    int a = 1;    int b = 2;    swap1(a,b);    cout<< "a=" << a <<endl<<"b=" <<b<<endl;    int c = 3;    int d = 4;    swap2(&c,&d);    cout<< "c=" << c <<endl<<"d=" <<d<<endl;    int e = 5;    int f = 6;    swap3(e,f);    cout<< "e=" << e <<endl<<"f=" <<f<<endl;} 

读书人网 >C语言

热点推荐