1. 程式人生 > >C++中的指標問題(三)

C++中的指標問題(三)

指標的用途非常的廣泛,除了可以間接用於修改變數地址等問題外,還可以用作函式中的傳遞,實現形參影響實參。具體情況通過一個例子來說明:
例:現要求設計一個程式,其功能是將兩個數交換,要求交換要在子函式中實現。
解決方案:使用指標往子函式中傳遞地址。

#include <iostream>
using namespace std;
void swap(int* a, int* b){   //指標作形參,要求實參傳遞的內容為地址
    int flag;
    flag = *a;
    *a = *b;
    *b = flag;    //實現交換,同時不需要返回值
}
int
main(){ int a, b; cin >> a >> b; //輸入兩個數 cout << "before the swap, the value of a and b is: "; cout << a << " " << b << endl << endl; //交換前 swap(&a, &b); //向該函式中傳遞實參,實參為變數a和b的地址 cout << "after the swap, the value of a and b is: "
; cout << a << " " << b; //輸出交換後 }

輸出結果:

該程式中,子函式沒有返回值,main函式中的兩個變數a與b的值也發生了交換,這是因為main函式中向子函式swap中傳遞了這兩個變數的地址,相當於房間A和房間B分別存有一數,子函式無權過問這兩個房間的內容,但是運用指標作為引數後,相當於main函式把房間A和B的鑰匙交給了子函式swap,就相當於給子函式授權了,子函式swap可以直接用鑰匙開啟房間A和B,再將數進行交換。

如有錯誤,歡迎大家批評與指正!