總感覺只要把指標作為引數,就可以達到我們需要的效果。舉乙個例子,我通過「
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位元組的一種資料型別。而引用又是占用多少記憶體呢?我把程式稍作修改,比較來看看 第一種情況和第二種情況的區別在於。...