先來看兩個程式
程式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 合法 ...