首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于概念性有关问题,求解

2012-09-12 
关于概念性问题,求解void swap1(int x ,int y){int ttxxyyt}void swap2(int *x,int *y){int tt*x

关于概念性问题,求解
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;} 

热点排行