阅读背景:

C++值传递引用传递与指针传递

来源:互联网 
 

  //by referance(引用传递的方式)值改变 
#include<iostream>
using namespace std;
void swap(int &a,int &b)//交换的是&a和&b 
{
 int c;
 c=a;
 a=b;
 b=c;
}
int main()
{
 int a=2,b=3;
 cout<<"a="<<a<<" "<<"b="<<b<<endl;
 swap(a,b);
 cout<<"a="<<a<<" "<<"b="<<b<<endl;
 return 0;
}

a=2 b=3
a=3 b=2


     //by value (值传递)值不变 
#include<iostream>
using namespace std;
void swap(int a,int b)//此处a,b.是原a,b的副本,此处的变化不影响原A,B 
{
 int c;
 c=a;
 a=b;
 b=c;
}
int main() 
{
 int a=2,b=3;
 cout<<"a="<<a<<" "<<"b="<<b<<" "<<endl;
 swap(a,b);
 cout<<"a="<<a<<" "<<"b="<<b<<" "<<endl;
 return 0;
}

a=2 b=3
a=2 b=3

     //by point (指针传递)改变只针对间接引用,值改变 
#include<iostream>
using namespace std;
void swap(int *a,int *b)//交换的是变量a的地址 
{
 int *c;
 c=a;
 a=b;
 b=c;
}
int main() 
{
 int a=2,b=3;
 cout<<"a="<<a<<" "<<"b="<<b<<" "<<endl;
 swap(a,b);
 cout<<"a="<<a<<" "<<"b="<<b<<" "<<endl;
 return 0;
}

a=2 b=3
a=3 b=2


#include<iostream>
using namespace std;
void swap(int *a,int *b)//*a的值就是&a,a所在的地址发生变化, 
{      // 自然a,b,都不再是原来的值
 int c;
 c=*a;
 *a=*b;
 *b=c;
}
int main() 
{
 int a=2,b=3;
 cout<<"a="<<a<<" "<<"b="<<b<<" "<<endl;
 swap(&a,&b);
 cout<<"a="<<a<<" "<<"b="<<b<<" "<<endl;
 return 0;
}

a=2 b=3
a=3 b=2

#include<iostream>
using namespace std;
void swap(int *x,int *y)//此处交换的是 x,y对与a,b,的指向关系,不改变a,b的值 
{
 int *c;
 c=x;
 x=y;
 y=c;
}
int main() 
{
 int a=2,b=3;
 cout<<"a="<<a<<" "<<"b="<<b<<" "<<endl;
 swap(&a,&b);
 cout<<"a="<<a<<" "<<"b="<<b<<" "<<endl;
 return 0;
}
 

  //by referance(引用传递的方式)值改变 
#include<io



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: