用swap函數交換兩個整數


#include<stdio.h>  //頭文件 
main() //主函數 
{
    void swap(int *p,int *q);  //聲明 
    int a,b;   //定義兩個整數 
    int *p1,*p2;   //  定義兩個地址 
    scanf("%d,%d",&a,&b);  //輸入兩個整數 
    p1=&a;   //p1指向a
    p2=&b;   // p2指向 b 
    swap(p1,p2);  //交換p1和p2 
    printf("%d,%d\n",a,b);  //輸出a,b的值 
}
void swap(int *p,int *q)  //調用函數 
{
    int k;  //定義一個整數 
    k=*p;   // 將*p的值賦給k 
    *p=*q;  //將*q的值賦給*p 
    *q=k;  //將k的值賦給*q 
}

 

1,2
2,1

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

 總結:swap函數用的不熟練,定義函數時總出錯。

#include<stdio.h>

void swap(int *p,int *q)
{
    int *m;
*m=*p;
    *p=*q;
    *q=*m; 
 } 

指針變量在使用的時候沒有進行初始化,所以有可能指向是其他重要的數據。

#include<stdio.h>

void swap(int *p,int *q)
{
    int *m;
    m=p;
    p=q;
    q=m;
 } 

在swap函數中只是對指針變量中的地址進行調換(&p和&q交換),而並沒有影響到a,b的值。

#include<stdio.h>
int main()
{int p1,p2;//定義整型
int*p,*q,*c;//定義指針
p=&p1;//p指向i
q=&p2;//q指向j
int*swap(int*a,int*b);//定義函數指針 ,讓函數返回指針類型數據 
scanf("%d,%d",p,q);
c=swap(p,q);//將函數的返回值賦值給指針變量c 
printf("%d",*c);
return 0; 
 } 
 int*swap(int*a,int*b)
 {if(*a<*b)
 return b;//返回指針變量 
 else
 return a;
 }
1,2
2
--------------------------------
Process exited after 3.378 seconds with return value 0
請按任意鍵繼續. . .

 總結:指針運用是需要注意何時用&,注意將p指向i和q指向j。


免責聲明!

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



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