#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。
