1.值傳遞
#include <iostream> using namespace std; //從控制台輸入2個整數,使用自定義函數交換兩個變量的值 void swap(int x,int y) { int temp; temp=x; x=y; y=temp; } int main() { int a,b; cout<<"請輸入2個整數:"<<endl; cin>>a>>b; cout<<"交換前"<<"a="<<a<<" "<<"""b="<<b<<endl; swap(a,b);//調用交換函數 cout<<"交換后"<<"a="<<a<<" "<<"""b="<<b<<endl; return 0; }
運行結果:實參傳遞數據給形參是單向傳遞的方式,形參值的改變無法傳回來給實參。所以無法交換原來實參的值。
2.修改形參指針的值
#include <iostream> using namespace std; //從控制台輸入2個整數,使用自定義函數交換兩個變量的值 void swap(int *p,int *q) { int *temp; temp=p; p=q; q=temp; } int main() { int a,b; cout<<"請輸入2個整數:"<<endl; cin>>a>>b; int *p,*q; p=&a; q=&b; cout<<"交換前"<<"*p="<<*p<<" "<<"*q="<<*q<<endl; swap(p,q); cout<<"交換后"<<"*p="<<*p<<" "<<"*q="<<*q<<endl; cout<<"交換后"<<"a="<<a<<" "<<"""b="<<b<<endl; cout<<"交換前"<<"p指向的地址"<<p<<" "<<"q指向的地址"<<q<<endl; cout<<"交換后"<<"p指向的地址"<<p<<" "<<"q指向的地址"<<q<<endl; return 0; }
運行結果:結果與值傳遞相同,不能通過改變形參指針變量的值而使實參指針變量的值改變,這里同值傳遞一樣,都是單向傳遞的。
3.修改實參指針變量所指向變量的值
#include <iostream> using namespace std; //從控制台輸入2個整數,使用自定義函數交換兩個變量的值 void swap(int *p,int *q) { int temp; temp=*p; *p=*q; *q=temp; } int main() { int a,b; cout<<"請輸入2個整數:"<<endl; cin>>a>>b; cout<<"交換前"<<"a="<<a<<" "<<"""b="<<b<<endl; int *p,*q; p=&a; q=&b; swap(p,q); cout<<"交換后"<<"a="<<a<<" "<<"""b="<<b<<endl; return 0; }
運行結果:調用函數時不會改變實參指針變量的值,但是可以改變其指向變量的值。
一般調用函數只能得到一個返回值,但是可以通過調用函數修改主調函數中實參指針變量指向的值,從而達到從被調函數中得到多個值的目的。