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后面忘寫了&,說明程序是敲出來的。