編寫一個函數,令其交換兩個int指針。
交換兩個值可以使用兩種形式,一種是使用引用傳遞實參進行交換,另一種是使用指針以值傳遞的方式進行交換。
題目要求交換兩個int指針,也可以參考交換值的兩種形式。
1、使用指向指針的指針進行交換。
void swapPointerUsePointer(int **p, int **q) { int *t = *p; *p = *q; *q = t; }
2、使用引用來傳遞指針進行交換、
void swapPointerUseReference(int *&p, int *&q) { int *t = p; p = q; q = t; }
測試代碼如下:
int main() { int a = 100, *p = &a; int b = 200, *q = &b; cout << "original pointer and value: " << endl; cout << "a: " << p << " value: " << *p << endl; cout << "b: " << q << " value: " << *q << endl; cout << endl; cout << "after swap by pointer the current pointer and value: " << endl; swapPointerUsePointer(&p, &q); cout << "a: " << p << " value: " << *p << endl; cout << "b: " << q << " value: " << *q << endl; cout << endl; cout << "after swap by reference the current pointer and value: " << endl; swapPointerUseReference(p, q); cout << "a: " << p << " value: " << *p << endl; cout << "b: " << q << " value: " << *q << endl; cout << endl; return 0; }
測試結果如下:
original pointer and value: a: 006FF780 value: 100 b: 006FF768 value: 200 after swap by pointer the current pointer and value: a: 006FF768 value: 200 b: 006FF780 value: 100 after swap by reference the current pointer and value: a: 006FF780 value: 100 b: 006FF768 value: 200