交換兩個變量的值(指針用法)

  • 大意:
    用函數實現變量的值的交換,用到指針!

  • 思路:
    該函數要實現變量的值的交換,形參需爲兩變量的地址。
    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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章