【C++編程基礎】——使用指針交換兩個變量的值


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;
 } 

運行結果:調用函數時不會改變實參指針變量的值,但是可以改變其指向變量的值。

一般調用函數只能得到一個返回值,但是可以通過調用函數修改主調函數中實參指針變量指向的值,從而達到從被調函數中得到多個值的目的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM