在對指標進行操作時經常會涉及到指標的拷貝,一般來講指標的拷貝分為兩種:深拷貝與淺拷貝。兩者之間使用不當會造成很惡劣的影響。下面例項說明:
我們先設定乙個字串指標s,假設其指向記憶體的內容是「adfsdfsf」,記該儲存區域為m,那麼我們得知,s指標所指向區域m。若我們的用指標p對其內容進行淺拷貝,那麼我們得到了另乙個指向m的指標,即p=s,此時p和s的作用相同,指向記憶體也相同,所不同的只是名字罷了。若我們對p指標指向的內容進行操作,那麼s指標所指向的內容也會發生相應的改變,反之亦然。
若對s進行深拷貝,比如利用函式memcpy,該操作是將s的記憶體內容賦給p,此時雖然記憶體區域的內容是相同的,但p和s是兩個指向兩個不同記憶體區域的指標,對p或s的分別操作都不會影響到對方。
隨機指標鍊錶深拷貝
題目描述給定乙個鍊錶,每個節點包含乙個額外增加的隨機指標,該指標可以指向鍊錶中的任何節點或空節點。要求返回這個鍊錶的 深拷貝。我們用乙個由 n 個節點組成的鍊錶來表示輸入 輸出中的鍊錶。每個節點用乙個 val,random index 表示 val 乙個表示 node.val 的整數。random ...
淺拷貝 深拷貝
copy mutablecopy copy 不管是可變的,還是不可變的,結果都是不可變的 mutablecopy 不管是不可變的,還是可變的,結果都是可變的 nsmutablestring str nsmutablestring stringwithformat a nsarray arr1 str...
深拷貝 淺拷貝
c 中物件的複製就如同 轉殖 用乙個已有的物件快速地複製出多個完全相同的物件。一般而言,以下三種情況都會使用到物件的複製 1 建立乙個新物件,並用另乙個同類的已有物件對新物件進行初始化,例如 cpp view plain copy class rect rect rect1 rect rect2 r...