7 3 指標作為函式的引數

2021-09-28 20:35:11 字數 426 閱讀 2255

乙個函式在編譯時被分配乙個入口位址,這個入口位址被稱為函式的指標。在c++中,函式名代表函式的入口位址。

共有三個重點:

(1)指標作函式的引數-實現位址傳遞

(2)返回指標的函式

(3)利用指向函式的指標呼叫函式

指標作函式的引數,具有以下用途:

(1)指標作函式引數,這時形參接受的是實參的位址。函式中通過對指標的間接訪問實現引數的按「引用傳遞」功能。

(2)設定多個指標引數可從函式中帶回多個結果值。

(3)對於傳遞一塊連續的記憶體區域資料,傳遞首位址(比如int max(int *a))比傳遞資料值(比如int max(int a))不僅開銷小而且效率高。(我不贊同這一點,難道首位址所用的儲存空間一定小於資料值嗎)

舉個例子:

(1)編寫交換兩個變數值的函式(位址傳遞)

<

7 3 指標與陣列的對比

c c 程式中,指標和陣列在不少地方可以相互替換著用,讓人產生一種錯覺,以為兩者是等價的。陣列要麼在靜態儲存區被建立 如全域性陣列 要麼在棧上被建立。陣列名對應著 而不是指向 一塊記憶體,其位址與容量在生命期內保持不變,只有陣列的內容可以改變。指標可以隨時指向任意型別的記憶體塊,它的特徵是 可變 所...

C指標7 指標作為函式返回值

c語言允許函式的返回值是乙個指標 位址 我們將這樣的函式稱為指標函式。下面的例子定義了乙個函式 strlong 用來返回兩個字串中較長的乙個 include include char strlong char str1,char str2 else int main 用指標作為函式返回值時需要注意的...

指標作為函式引數

當指標作為函式引數時,對引數本身的修改並不影響原來的值,比如下面的 刪除鍊錶中第乙個值為item的結點。但是結果卻不正確。void delete node head,int item 這段 的問題是,第乙個引數是指標型別而head null修改的實際上是這個指標的乙個副本,所以不會對原來的指標產生效...