C++中參數傳遞的兩種方式:傳值與傳址及它們的區別

#include<iostream>
using namespace std;
void mySwap(int *p1,int *p2);
int main(){

	int a=12;
	int b=44;

	int *pa=&a;
	int *pb=&b;


	if(a<b){
	
		mySwap1(a,b);
		//mySwap2(pa,pb);
		//mySwap3(pa,pb);
		//mySwap4(a,b);
	}


	return 0;
}

/*
int類型作爲形參--值傳遞:形參a ,b 也要分配內存空間,實參的值複製給形參
*/
void mySwap1(int a,int b){
	int temp;
	temp=a;
	a=b;
	b=temp;
}
/*
int * 類型作爲形參--值傳遞:形參p1,p2 也要分配內存空間,實參的值複製給形參(地址)
*/
void mySwap2(int *p1,int *p2){

	//改變形參指針的指向,不會影響到實參
	int *temp;
	temp=p1;
	p1=p2;
	p2=temp;

}
/*
int * 類型作爲形參--值傳遞:形參p1,p2 也要分配內存空間,實參的值複製給形參(地址)
*/
void mySwap3(int *p1,int *p2){

	//改變形參指針指向的內存空間值,也就改變了實參指針指向的內存空間值
	int temp2;
	temp2=*p1;
	*p1=*p2;
	*p2=temp2;
}

/*
引用類型作爲形參--址傳遞:形參a,b是不分配內存空間的,形參是實參的“別名”
*/
void mySwap4(int &a,int &b){

	int temp;
	temp=a;
	a=b;
	b=temp;
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章