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

2021-07-05 21:42:23 字數 651 閱讀 1314

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

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...