用指針交換兩個整型數值


void swap(int *a,int *b) //定義函數 
{
    int t; //輸入一個整型t 
    
    t=*a;
    *a=*b;
    *b=t;  //交換 *a,*b 
}

 int main()   //主函數 
 {
     int m,n;  //輸入整型 m n 
     int *p1,*p2;// 輸入兩個指針變量 
    scanf("%d %d",&m,&n); //輸入兩個值 
     p1=&m;  //把m的地址給p1 
     p2=&n;  //把n的地址給p2 
     swap(p1,p2);//調用函數 
     printf("m=%d n=%d",m,n);//輸出 
     return 0;//返回值0 
 }
 10 20
m=20 n=10
--------------------------------
Process exited after 5.124 seconds with return value 0
請按任意鍵繼續. . .

總結: 每次寫程序時都沒有清晰的思路,只有慢慢寫草稿,一次次的編譯,有時候寫到最后編譯成功,不知道代碼的意思。對指針還不熟悉。


二:*m是指針變量,m無確定的值,不可見,會破環正常工作。


三:實參和形參都是單向值傳遞的,用指針可以得到多個變化值。

int max(int *a,int *b)//定義max函數 
{
    
    if(*a>*b) //比較大小 
    return(*a); //返回較大值 
    else
    return(*b); 
}

int main()

{
   int m,n,t;
   int *p1,*p2;
   scanf("%d %d",&m,&n);
   p1=&m;
   p2=&n;
   t=max(p1,p2); //調用函數,把最大值賦值給t 
   printf("%d\n",t);//輸出t 

} 

100 200
200

--------------------------------
Process exited after 7.521 seconds with return value 4
請按任意鍵繼續. . .


總結:寫此程序時在scanf后面忘寫了&,說明程序是敲出來的。 
 
         

 

 
        

 


免責聲明!

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



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