C/C++中函式引數傳之指標形參
阿新 • • 發佈:2019-02-09
指標的行為和其他非引用型別一樣。當執行指標拷貝操作時,拷貝的是指標的值。拷貝之後,;兩個指標是不同的指標。因為指標使我們可以間接地訪問它所指的物件,所以通過指標可以修改它所指物件的值:
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)