VC++ 介绍值传递/指针传递/引用传递的作用

下面5个函数哪个能够成功进行两个数的交换?

分析下面5个函数,用于了解值传递/指针传递/引用传递的使用方法。


#include<iostream>
using namespace std;
void swap1(int p, int q);
void swap2(int* p, int* q);
void swap3(int* p, int* q);
void swap4(int* p, int* q);
void swap5(int& p, int& q);
int main() {
	int a = 1, b = 2;
	//swap1(a, b);
	//swap3(&a,&b);
	//swap4(&a, &b);
	swap5(a, b);
	cout << a << " " << b << endl;
	// 使得dos界面不闪屏	            
	int i;
	cin >> i;
	return 0;
}
void swap1(int p,int q) {//值传递
	int temp;
	temp = p;         
	p = q;
	q = temp;
}
void swap2(int* p,int* q) {//语法错误,空指针
	/*
	int* temp;
	*temp = *p;
	*p = *q;
	*q = *temp;*/
}
void swap3(int* p, int* q) {//指针传递-指针指向变化
	int *temp;
	temp = p;
	p = q;
	q = temp;
}
void swap4(int* p,int* q) {//指针传递-指针指向的值变化
	int temp;
	temp = *p;
	*p = *q;
	*q = temp;
}
void swap5(int &p, int &q) {//引用传递
	int temp;
	temp = p;
	p = q;
	q = temp;
}

swap1:值传递,a和b是全局变量,不能实现a和b的交换

swap2:指针传递:内存泄漏

swap3:指针传递:不能实现两数的交换,只是指针的变化

swap4:指针传递:可以实现两数的交换,指针指向的内容发生了变化

swap5:引用传递:可以实现两数的交换










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值