指標作引數,指標變數的引用問題

2021-06-08 03:58:48 字數 813 閱讀 7044

總感覺只要把指標作為引數,就可以達到我們需要的效果。舉乙個例子,我通過「

bool delete(bstree p)

」這個函式來刪除結點

*p(注:

bstree

是bstnode*

指標變數),但是每次都是提示記憶體溢位的問題,弄的好鬱悶,後來仔細想了想,好像想出來了一些東西。

先說一下上面說的這個函式,如果我們傳遞過來乙個指向乙個結構體(二叉樹)的指標,它占有一片記憶體(設為

a),但在函式中,這個指標又指向了另一塊記憶體(設為

b)。於是,在函式實現中,這個指標(的確是指向原來記憶體

a的那個指標)又指向記憶體

b,於是,對

b進行一系列操作,雖然進行了刪除操作,但是那都是對記憶體

b的操作,我們的記憶體

a並沒有發生任何變化,於是,沒有達到我們需要的效果。

但是,倘若我們使用引用就不一樣了。因為引用的時候,我們形參的那個指標變數其實就是我們傳遞過來的指標變數(只是乙個別名,它們兩個指標又共同的儲存位址,當然指向相同的記憶體空間了,於是呢,我們在函式中的任何操作都可以反映到記憶體

a的操作,於是可以達到我們的目的。

如果我們想「只」通過指標達到我們的目的的話,也就是說修改實參的內容,那我們在函式中必須通過

*p來修改我們要修改的內容。但是,如果我們僅僅是通過修改指標的位置達到我們目的的話(例如上面通過修改指標的位置釋放某一塊兒記憶體),這樣是沒法達到的。於是呢,我們只用通過傳遞指標的時候,再加上引用,使用指標變數的引用,這樣呢,我們在函式實現中的指標就是實參的指標(是實參指標的乙個同名變數,也就是乙個別名!),這樣,我們的修改,也就達到了我們的作用!

結構指標變數作函式引數

將乙個結構體變數的值傳遞給另乙個函式,有3種方法 1 用結構體變數的成員做引數。2 用結構體變數做實參。3 用指向結構體變數的指標做實參,將結構體變數的位址傳給形參。例 有乙個結構體變數stu,內含學生學號 姓名和3門課程的成績。通過呼叫函式print將他們輸出。要求 用結構體變數做函式實參 inc...

C語言指標變數作函式引數

按如下函式原型用函式程式設計解決如下的日期轉換問題 要求考慮閏年的問題 輸入某一年的第幾天,計算並輸出它是這一年的第幾月第幾日。函式功能 對給定的某一年的第幾天,計算它是這一年的第幾月第幾日 函式入口引數 整型變數year,儲存年 整型變數yearday,儲存這一年的第幾天 函式出口引數 整型指標p...

變數 指標 引用

先看一段程式 從執行結果可以看出,指標引用都可以指向變數。指標是自由的,而引用只能初始化一次,之後如果再賦值,就直接修改指向的變數,因此,引用是變數的別名 我們知道指標在32位機器上是4位元組的一種資料型別。而引用又是占用多少記憶體呢?我把程式稍作修改,比較來看看 第一種情況和第二種情況的區別在於。...