指標的行為和其他非引用型別一樣。當執行指標拷貝操作時,拷貝的是指標的值。拷貝之後,;兩個指標是不同的指標。因為指標使我們可以間接地訪問它所指的物件,所以通過指標可以修改它所指物件的值:
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)
呼叫resert函式之後,實參所指的物件被置為0,但是實參本身並沒有改變:
int i = 42;
resert(&i); //改變 i 的值而非 i 的位址
cout << "i = " << i << endl; //輸出i = 0;
熟悉c的程式設計師常常使用指標型別的形參訪問函式外部的物件。在c++語言中,建議使用引用型別的形參代替指標。
(以上內容摘自c++primer)
C C 傳值 傳址 傳引用與指標型形參
傳值 直接把實參拷貝乙份放入新開闢的記憶體,對拷貝後的數值進行相應的函式操作 傳址 把實參位址拷貝乙份放入新開闢的記憶體,通過拷貝的位址達到操作實參的目的 傳引用 沒有拷貝過程,直接對實參進行函式操作,引用只是對實參起了個綽號 實參的資料型別要和形參的資料型別保持一致 實參是位址時,形參時指標 實參...
C C 函式中陣列傳參
voidf char s char str hello world cout sizeof str strlen str f str 以上 在32位平台上輸出為 12,11,4,11 原因 在c c 裡陣列作為引數時傳遞的實際上是指向陣列第乙個元素的指標,因此sizeof str 返回的是指標的大小...
C C 指標作為函式形參注意點
函式形參是指標變數,直接對其賦值 指標相互賦值 只是改變了它的指向,原先傳入的指標指向的內容並沒改變 若要想改動其指向的值,需要通過memcpy或通過指標呼叫賦值 include include include include include include include using namesp...