指標作為函式形參

2021-08-22 15:13:45 字數 917 閱讀 8562

先來看兩個程式

程式1

#include

void fun(int

*p)

int main(void)

輸出為

程式2

#include

void fun(int

*p)

int main(void)

輸出為

對於程式2,不難理解

程式1,明明改變了p的指向了,為什麼還是輸出1呢?

其實問題的關鍵不是指標作為形參的問題,而是函式傳參的問題。

q作為形參進入fun函式時,不是q本身進入引數,而是轉殖了乙個指標變數,這個指標變數的值和q相等。

所以,在程式1中,只是轉殖的指標變數的指向發生了改變,而q的指向並沒有發生改變。

為了驗證這一結論,看程式3

程式3

#include

void fun(int

*p)

int main(void)

輸出為

可看出,main中的p和fun中的p,值是一樣的,但是是屬於兩個不同的指標變數。

參考自

C C 指標作為函式形參注意點

函式形參是指標變數,直接對其賦值 指標相互賦值 只是改變了它的指向,原先傳入的指標指向的內容並沒改變 若要想改動其指向的值,需要通過memcpy或通過指標呼叫賦值 include include include include include include include using namesp...

指標基礎(此文還沒涉及指標作為函式形參)

include using namespace std 指標 指向乙個位址 null 0 int main include using namespace std 陣列 類似 指標 int main int p a 指標指向a p a 預設指向陣列的第一位 0 cout p endl 1 cout ...

函式指標形參

一 在介紹指標形參之前,先簡要說明下兩個運算子 和 1 取址運算子 用來取得其運算元的位址。取址運算子的運算元必須是在記憶體中可定址到。換句話說,該運算子只能用作函式或物件 例如左值 而不可以用於位欄位,以及那些未被儲存型別修飾符register宣告的內容。float x,ptr ptr x 合法 ...