指標與數值交換
阿新 • • 發佈:2019-02-09
#include<stdio.h>
void Swap(int *p1,int *p2)
{
int tmp = *p1;
*p1 = *p2;
*p2 = tmp;
}
int main()
{
int a = 10;
int b = 20;
printf("%d,%d\n",a,b);
Swap(&a,&b);
printf("%d,%d\n",a,b);
return 0;
}
上圖為指標資料交換邏輯圖
普通數值交換
void Swap(int a,int b) { int tmp = a; a = b; b = tmp; printf("%d,%d\n",a,b); } int main() { int a = 10; int b = 20; printf("%d,%d\n",a,b); Swap(a,b); return 0; }
指標數值交換與之前的數值交換不同,指標交換是徹底的交換它將變數的地址及儲存的數值一同交換;而之前的數值交換隻交換數值不交換地址;
交換前:p1整形地址變數儲存a的地址,*p1解引用為a;p2整形地址變數儲存b的地址,*p2解引用為b;
交換後:p1整形地址變數儲存b的地址,*p1解引用為b;p2整形地址變數儲存a的地址,*p2解引用為a;
通過一個tmp變數實現數值與地址同時交換;
交換過程:把*p1賦值給tmp,此時tmp等於變數a,*p2賦值給*p1,此時*p1解引用為變數b,tmp賦值給*p2,此時*p2解引用為變數a;