我有點困惑於如何通過引用傳遞函數指針?你如何傳遞C中的結構指針?
舉例來說,這裏的一些代碼,我已經寫了 (我沒有複製整個功能,只是它的一部分是相關的)
metadata * removeBlock(metadata *first)
{
metadata *temp = first;
if(first == NULL || first -> prev == NULL)
{
first -> in_use = 1;
first = NULL;
return temp;
}
}
我要的是,當函數返回,傳入的原始值應該設置爲NULL。 這裏是我如何調用函數,(這行代碼將從堆中的區域中拉出元數據結構,它工作正常,我已經調試並確保在此之後,結構實際上指向有效的元數據結構)
metadata *strct = ((metadata *)ptr - sizeof(metadata));
removeBlock(strct);
但是,在此方法返回後,strct仍然是我在函數中傳遞它之前的值。我嘗試傳遞& strct,但這只是拋出了一個無效的轉換異常。傳遞結構作爲參數的最佳方式是什麼?
謝謝。
C根本沒有'傳遞引用',它只有'傳值'。即使在傳遞指針時,它本質上也是'傳遞值'。 – 2013-04-26 01:22:52
您的功能有問題。例如,如果'first == NULL',那麼繼續並嘗試設置'first-> in_use'來解引用NULL指針。 – Blastfurnace 2013-04-26 01:25:55
我沒有任何情況下,當用戶傳入一個NULL,雖然這是一個好主意,以消除檢查,以便它永遠不會發生。謝謝。 – iamseiko 2013-04-26 01:38:45