交換兩個變量的值(指針用法)
阿新 • • 發佈:2019-03-31
wap 內部 size .com png water 效果 數值交換 分享
思路:
該函數要實現變量的值的交換,形參需為兩變量的地址。
1)若不是地址,形參是兩個變量,那麽傳進去的是兩個單純的數值,數值在函數內部做了交換,即函數內的兩個局部變量(形參)進行了數值交換,交換後的效果並沒有影響到函數外的實參(調用該函數相當於只是給函數提供了兩個數值)。
2)若傳給形參的是實參的地址(即指針),那在函數內部通過解引用該指針,可以找到實參的數值,此時再進行交換則交換的是存在實參地址上的數值。交換後的值依然在a和b的地址存放,只不過原來存在a那的數現在存在了b那,存在b那的數現在存在了a那。
大意:
用函數實現變量的值的交換,用到指針!
該函數要實現變量的值的交換,形參需為兩變量的地址。
1)若不是地址,形參是兩個變量,那麽傳進去的是兩個單純的數值,數值在函數內部做了交換,即函數內的兩個局部變量(形參)進行了數值交換,交換後的效果並沒有影響到函數外的實參(調用該函數相當於只是給函數提供了兩個數值)。
2)若傳給形參的是實參的地址(即指針),那在函數內部通過解引用該指針,可以找到實參的數值,此時再進行交換則交換的是存在實參地址上的數值。交換後的值依然在a和b的地址存放,只不過原來存在a那的數現在存在了b那,存在b那的數現在存在了a那。
(ps:a,b的地址是用十六進制表示的,轉成十進制和p,q的值相同)
- 參考代碼:
#include<stdio.h> #include<stdlib.h>
void swap(int* p, int* q) { int tmp=0; tmp = *p; *p = *q; *q = tmp; //printf("指針p的值:%d \n指針p的值:%d\n", p, q); } int main() { int a = 10; int b = 20; printf("a=%d b=%d\n", a, b); //printf("a的地址:%p\nb的地址:%p\n", &a, &b); swap(&a,&b); printf("a=%d b=%d\n", a, b); system("pause"); return 0; }
交換兩個變量的值(指針用法)