【C++知识点】值传递,引用传递,地址传递

// reference.cpp : 定义控制台应用程序的入口点。

#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <vector>

using namespace std;

//函数声明
void Swap1(int pNum1, int pNum2);
void Swap2(int& pNum1, int& pNum2);
void Swap3(int* pNum1, int* pNum2);
void Swap4(int* pNum1, int* pNum2);

int _tmain(int argc, _TCHAR* argv[])
{
	//实际变量
	int nNum1 = 5;
	int nNum2 = 8;
	cout << "初始值" << "\t" << nNum1 << endl;
	cout << "初始值" << "\t" << nNum2 << endl;
	cout << endl;
	
	Swap1(nNum1, nNum2);
	cout << "外部变量" << "\t" << nNum1 << endl;
	cout << "外部变量" << "\t" << nNum2 << endl;
	cout << endl;
	
	Swap2(nNum1, nNum2);
	cout << "外部变量" << "\t" << nNum1 << endl;
	cout << "外部变量" << "\t" << nNum2 << endl;
	cout << endl;
	
	Swap3(&nNum1, &nNum2);
	cout << "外部变量" << "\t" << nNum1 << endl;
	cout << "外部变量" << "\t" << nNum2 << endl;
	cout << endl;
	
	Swap4(&nNum1, &nNum2);
	cout << "外部变量" << "\t" << nNum1 << endl;
	cout << "外部变量" << "\t" << nNum2 << endl;
	cout << endl;
	
	system("pause");
	return 0;
}

//值传递:创建临时变量副本,操作的是临时变量
void Swap1(int nNum1, int nNum2){
	int nTemp = nNum1;
	nNum1 = nNum2;
	nNum2 = nTemp;
	cout << "nNum1值传递" << "\t" << nNum1 << endl;
	cout << "nNum2值传递" << "\t" << nNum2 << endl;
}

//引用传递:直接通过引用操作外部变量
void Swap2(int& nNum1, int& nNum2){
	int nTemp = nNum1;
	nNum1 = nNum2;
	nNum2 = nTemp;
	cout << "nNum1引用传递" << "\t" << nNum1 << endl;
	cout << "nNum2引用传递" << "\t" << nNum2 << endl;
}

//地址传递:创建指针副本,通过指针副本操作地址,从而操作外部变量
void Swap3(int* pNum1, int* pNum2)
{
	int nTemp = *pNum1;
	*pNum1 = *pNum2;
	*pNum2 = nTemp;
	cout << "*pNum1地址传递" << "\t" << *pNum1 << endl;
	cout << "*pNum2地址传递" << "\t" << *pNum2 << endl;
}

//地址交换:通过交换指针(地址)来交换所存的值,但不修改外部变量的值
void Swap4(int* pNum1, int* pNum2)
{
	int* pTemp = pNum1;
	pNum1 = pNum2;
	pNum2 = pTemp;
	cout << "*pNum1地址交换" << "\t" << *pNum1 << endl;
	cout << "*pNum2地址交换" << "\t" << *pNum2 << endl;
}

值传递
值传递不修改外部变量

地址传递
通过操作临时地址来操作外部变量

地址交换
通过交换地址交换所存的值,但不会修改外部变量

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值