接下來的這個其實不是我要說明,而是留給各位思考,這個問題並不會太難或是太複雜...現在再次考慮 SWAP_A 的副函式,只是我寫的方式換了

原本的:

// ====================================
void Swap_A(int *a, int *b)
{
        int  c;
        c = *a;
        *a = *b;
        *b = c;
}

換個方式:

// ====================================
void Swap_A(int *a, int *b)
{
        int *c;
        c = a;
        a = b;
        b = c;
}

請問有什麼差別嗎?出來結果會一樣嗎?

留下程式碼讓各位測試看看...

程式碼:

// ====================================
// FileName: CallByAddress2.cpp
// Author  : Edison.Shih.
// Complier: VC 2008

#include <stdio.h>

// ====================================
void Swap_A(int *a, int *b)
{
        int *c;
        printf("\n=== swap_A function initial ===\n");
        printf(" *a = %6d, *b = %6d\n",    *a, *b);
        printf("  a = %06X, b = %06X\n",    a,  b);
        c = a;
        a = b;
        b = c;
        printf("\n=== swap_A function swap end ===\n");
        printf(" *a = %6d, *b = %6d\n",    *a, *b);
        printf("  a = %06X, b = %06X\n",    a,  b);
}

// ====================================
int main(int argc, char **argv)
{
        int a=10;
        int b=5;

        printf("\n *=== before swap in main ===* \n");
        printf(" a = %6d, b = %6d\n",    a, b);
        printf("&a = %06X,&b = %06X\n", &a,&b);
        Swap_A(&a, &b);

        printf("\n *=== after swap in main ===* \n");
        printf("  a = %6d,  b = %6d\n",    a, b);
        printf(" &a = %06X, &b = %06X\n", &a,&b);

        return 0;
}

arrow
arrow
    全站熱搜

    Edison 發表在 痞客邦 留言(2) 人氣()