本節書摘來自異步社群出版社《從缺陷中學習c/c++》一書中的第6章,第6.7節,作者: 劉新浙 , 劉玲 , 王超 , 李敬娜 , ,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。
從缺陷中學習c/c++
代碼示例
現象&結果
num指針指向的内容沒有發生變化。
bug分析
程式的本意是定義并初始化指針num,然後通過函數function_b,改變指針所指的值,即num。但是實際上沒有改變,問題出在function_b中,指派的用法不正确。應該使用取内容運算符為指針所指的内容指派,而不是直接為指針指派。num=*buf的含義是把指針buf所指的value指派給指針num所指的value,而num=buf的含義是把指針buf的位址賦給指針num。
正确代碼
程式設計建議
函數中傳遞指針或引用參數,要注意修改是指針本身還是指針的内容,若不希望改變指針本身,建議加const聲明,如:function_b(int * const num)。
本文僅用于學習和交流目的,不代表異步社群觀點。非商業轉載請注明作譯者、出處,并保留本文的原始連結。