接下來的這個其實不是我要說明,而是留給各位思考,這個問題並不會太難或是太複雜...現在再次考慮 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;
}