C++传值和传地址

1、交换变量x和y的值

void swap(int x,int y)

{

       int temp;

       temp=x;

       x=y;

       y=temp;

       cout<<"swap:x="<<x<<",y="<<y<<endl;

}

 

 
C++传值和传地址

int a=5;int b=10;

int x=1;int y=2;

void swap(int x,int y){

       int temp;

       temp=x;

       x=y;

       y=temp;

       cout<<"swap:x="<<x<<",y="<<y<<endl;   

}

void main(){

       swap(a,b);

       cout<<"swap:a="<<a<<",b="<<b<<endl;

       cout<<"swap:x=============="<<x<<",y="<<y<<endl;

}

C++传值和传地址

此处Swap函数无法影响实参本身,执行swap时,只交换了其实参的局部副本,而传递给swap的实参并没有改变。所以最后输出的x,y值认为1,2。

 

2、交换变量a和b的值

void swap(int & x,int & y)

{

       int temp;

       temp=x;

       x=y;

       y=temp;

       cout<<"swap:x="<<x<<",y="<<y<<endl;

}

 C++传值和传地址

int a=5;int b=10;

int &x=a;int &y=b;//x是a的一个引用,y是b的一个引用,即别名

void swap(int &x,int &y){

       int temp;

       temp=x;

       x=y;

       y=temp;

       cout<<"swap:x="<<x<<",y="<<y<<endl;   

}

void main(){

       swap(a,b);

       cout<<"swap:a="<<a<<",b="<<b<<endl;

}

 C++传值和传地址

引用的一些规则如下: 
 (1)引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)。 
 (2)不能有NULL引用,引用必须与合法的存储单元关联(指针则可以是NULL)。 
 (3)一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象)。 

 

3、交换变量*x和*y的值

void swap(int * x,int * y)

{

       int temp;

       temp=*x;

       *x=*y;

       *y=temp;

       cout<<"swap:x="<<*x<<",y="<<*y<<endl;

}

 C++传值和传地址

int a=5;int b=10;

int *x=&a;int *y=&b;//指针引用

void swap(int *x,int *y){

       int temp;

       temp=*x;

       *x=*y;

       *y=temp;

       cout<<"swap:*x="<<*x<<",*y="<<*y<<endl;

       cout<<"swap:x"<<x<<",y="<<y<<endl;     

}

void main(){

       cout<<"swap:a="<<a<<",b="<<b<<endl;

       cout<<"swap:*x="<<*x<<",*y="<<*y<<endl;

       swap(&a,&b);

       cout<<"swap:a="<<a<<",b="<<b<<endl;

       cout<<"swap:x"<<x<<",y="<<y<<endl;

       cout<<"swap:*x="<<*x<<",*y="<<*y<<endl;

}

C++传值和传地址

调用swap后,x仍指向a,y仍指向b。

 

4、交换变量x和y的值

void swap(int * x,int * y)

{

       int * temp;

       temp=x;

       x=y;

       y=temp;

       cout<<"swap:x="<<*x<<",y="<<*y<<endl;

}

C++传值和传地址

int a=5;int b=10;

int *x=&a;int *y=&b;//指针引用

void swap(int *x,int *y){

       int *temp;

       temp=x;

       x=y;

       y=temp;

       cout<<"swap:*x="<<*x<<",*y="<<*y<<endl;

       cout<<"swap:x"<<x<<",y="<<y<<endl;

      

}

void main(){

       cout<<"swap:a="<<a<<",b="<<b<<endl;

       cout<<"swap:*x="<<*x<<",*y="<<*y<<endl;

       swap(&a,&b);

       cout<<"swap:a="<<a<<",b="<<b<<endl;

       cout<<"swap:x"<<x<<",y="<<y<<endl;

       cout<<"swap:*x="<<*x<<",*y="<<*y<<endl;

}

C++传值和传地址

Swap函数中改变了指针的指向。



 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值