1. 程式人生 > >VC++ 介紹值傳遞/指標傳遞/引用傳遞的作用

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:引用傳遞:可以實現兩數的交換