函式入參使用指標和引用的區別

2022-02-18 07:53:06 字數 751 閱讀 3183

最近做乙個工具,在整改函式時需要給乙個全域性變數賦值

radixnode *g_pstrootbase

以下是trset結構體的定義:

typedef struct tagtreename

treename;

typedef struct tagtreeset

treeset;

因為其他處理的需要,寫了個函式,函式原型為:

int settreename(treeset *trset, radixnode **tname)

想通過第二個入參tname將trset->tnameset[i].tname的位址賦值給g_pstrootbase(函式有刪減)

傳參方式為:settreename(&trset, &g_pstrootbase),內部處理如下

int settreename(treeset *trset, radixnode **tname)

但在除錯的時候發現g_pstrootbase並沒有賦值成功,即g_pstrootbase仍然是初始值

分析一下才發現&g_pstrootbase的意思是的g_pstrootbase位址,並不是乙個真正的指標變數,可以認為就是乙個位址常數!

修改函式中對g_pstrootbase的賦值方式如下:

int settreename(treeset *trset, radixnode **tname)

這樣程式就可以正常執行了,即將&trset->tnameset[i].tname的位址賦值到位址*tname上

引用形參 指標形參的使用

引用形參 指標形參可以改變主函式內的實參值 includeusing std cin using std cout using std endl 形參其實是在把實參傳遞給子函式的時候定義了乙個新的變數,但是這個變數的值和實參相等,所以在子函式裡無論怎麼修改都不會影響到呼叫它的函式的實參的值 int ...

指標引用和引用指標的區別

c 在傳參的過程中,指標 和指標引用 是有區別的。雖然,我們往往可以通過傳指標然後通過間址訪問來修改指標所指向物件的值,同樣,通過引用也可以直接修改物件的值。但是,當傳指標的時候有乙個問題,就是,我們雖然可以通過指標來修改指標所指向物件的值,但是我們沒有不能直接修改指標的內容 也就是指標變數存放的位...

函式傳參,指標與引用的區別。(例項分析)

這幾天做了個二叉樹的實驗,在執行時發現乙個問題,如下 二叉樹的結構體 typedef struct binarytreenode bitnode,bitree void precreatebitree bitree t 問題是 在main函式中呼叫此函式後,返回的為空樹。通過除錯,我發現在函式中的指...