传值传地址和传引用

传值传地址和传引用的小结或者笔记

程序的目的是在改变两个指向整形的指针的指向,也就是在改变指针的值

见代码:

#include <iostream>
using namespace std;

void swap1(int *x,int *y){
	//传递的是指针的值,形参和实参并不是同一个对象
	//交换的是形参(两个指针)的值,实参中两个指针的指向并没有发生改变
	int *tmp;
	tmp=x;
	x=y;
	y=tmp;
}

void swap2(int *&x,int *&y){
	//传递的是指针的引用(真正的以地址的方式传递参数),形参和实参都是同一个指针
	//交换指针的值,两个指针的指向交换了
	int *tmp;
	tmp=x;
	x=y;
	y=tmp;
}

void swap3(int **x,int **y){
	//传递的是指针的地址,形参和实参都是同一个指针的地址
	//“*指针的地址”为指针的值,交换指针的值,两个指针的指向交换了
	int *tmp;
	tmp=*x;
	*x=*y;
	*y=tmp;
}

int main(){
	//实验目的就是交换指针的值
	//输入:p1指向a,p2指向b
	//输出:p1指向b,p2指向a
	//传值:把实参的值赋给形参,对形参的修改不会影响到实参的值
	//传引用:形参和实参是同一个对象,只是他们的名字不同,对形参的修改将会影响到实参
	//传地址:形参和实参是同一个对象
	int a=1;
	int b=2;
	int *p1=&a;
	int *p2=&b;
	cout<<"  传值前"<<"a: "<<*p1<<" b: "<<*p2;
	swap1(p1,p2);
	cout<<"---  传值后"<<"a: "<<*p1<<" b: "<<*p2<<endl;
	cout<<"传引用前"<<"a: "<<*p1<<" b: "<<*p2;
	swap2(p1,p2);
	cout<<"---传引用后"<<"a: "<<*p1<<" b: "<<*p2<<endl;
	cout<<"传地址前"<<"a: "<<*p1<<" b: "<<*p2;
	swap3(&p1,&p2);
	cout<<"---传地址后"<<"a: "<<*p1<<" b: "<<*p2<<endl;
	return 0;
}


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值