函式指標引數問題

2021-08-30 11:05:36 字數 576 閱讀 2429

這一則是關於函式指標引數的。我們經常犯下面這樣的錯誤。

void getpointer(char *p)

int main()

在上面**中,最終會產生error。主要是因為在main函式中,指標p始終都是nullptr空指標。

當我們使用函式指標引數時,我們雖然傳入了乙個指標引數p,但是,在函式getpointer內部,會複製這個指標引數。

所以,在函式getpointer內部,指標p和main函式裡面的p指向是相同的,但是卻是兩個指標。

因而,修改getpointer函式裡面的p指標,不會影響main函式的p指標。main函式的p指標依舊指向nullptr。

我們可以將**修改為如下:

void getpointer(char **p)

int main()

上面**通過指標的指標,使得指標p裡面的值進行修改。所以,需要記住的一點是:

作為函式指標引數,我們只能改變這個指標引數裡面的值,並不能改變其本身。

函式引數的傳遞問題(指標的指標)

程式1 void mymalloc char s 我想在函式中分配記憶體,再返回 s char malloc 100 void main char p null mymalloc p 這裡的p實際還是null,p的值沒有改變,為什麼?if p free p 程式2 void mymalloc cha...

函式指標 函式指標做函式引數

陣列型別如何定義 typedef int myarray 5 這是我定義的陣列型別,這個型別的名字是myarray,它的本質是乙個記憶體固定大小模板 myarray arr arr是乙個陣列 大小為5 型別的變數。可以這樣訪問arr 0 arr 1 arr 2 typedef int myp 5 定...

函式的指標引數傳遞問題 理解指標變數

我們預期的結果是輸出兩個 a.可是執行的結果卻是下圖。為什麼只輸出了乙個a?下面我們分析一下 在fun1中,我們用malloc分配了一段記憶體,並將該段記憶體的首位址放在指標變數n,然後我們就用n這個位址,開始給結構體賦值。在fun2中,我們以為在fun1中已經給node分配好了記憶體,也賦好值了。...