1. 程式人生 > >交換兩個變量的值(指針用法)

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

wap 內部 size .com png water 效果 數值交換 分享

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

  • 思路:
    該函數要實現變量的值的交換,形參需為兩變量的地址。
    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;
    }

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