1. 程式人生 > >C/C++中函式引數傳之指標形參

C/C++中函式引數傳之指標形參

     指標的行為和其他非引用型別一樣。當執行指標拷貝操作時,拷貝的是指標的值。拷貝之後,;兩個指標是不同的指標。因為指標使我們可以間接地訪問它所指的物件,所以通過指標可以修改它所指物件的值:

       Int n = 0, i = 42;

       int *p = &n,  *q = &i;       //p指向n; q指向i

       *p = 42;                         //n的值改變; p不變

       p = q;                             //p現在指向了i; 但是 i 和 n 的值不變 

指標形參的行為與之類似:

       //該函式接受一個指標, 然後將指標所執行的值置為0

       void reset(int *ip)

       {

              *ip = 0;                    //改變指標ip所指物件的值

              ip = 0;                     //只改變了ip的區域性拷貝, 實參未被改變

       }

呼叫resert函式之後,實參所指的物件被置為0,但是實參本身並沒有改變:

       int i = 42;

       resert(&i);                               //改變 i 的值而非 i 的地址

       cout << "i =  " << i << endl;          //輸出i = 0;

熟悉C的程式設計師常常使用指標型別的形參訪問函式外部的物件。在C++語言中,建議使用引用型別的形參代替指標。

(以上內容摘自C++Primer)