C C 淺拷貝和深拷貝的例項詳解

2022-10-04 00:42:19 字數 852 閱讀 1212

c/c++ 淺拷貝和深拷貝的例項詳解

深拷貝是指拷貝物件的具體內容,而記憶體位址是自主分配的,拷貝結束之後,兩個物件雖然存的值是相同的,但是記憶體位址不一樣,兩個對www.cppcns.com象也互不影響,互不干涉。

淺拷貝就是對記憶體位址的複製,讓目標物件指標和源物件指向同一片記憶體空間.

淺拷貝只是對物件的簡單拷貝,讓幾個物件共用一片記憶體,當記憶體銷毀的時候,指向這片記憶體的幾個指標需要重新定義才可以使用,要不然會成為野指標。

在ios開發中也會涉及到淺拷貝和深拷貝,簡而言之:

淺拷貝:拷貝指標變數的值

深拷貝:拷貝指標所指向記憶體空間

不過這次我們通過c語言來實現:

//宣告乙個結構體

typedef struct person person;

//拷貝方法

void copyperson(person *from, person *to)

//main函式

int main(int argc, const char * ar**)

//列印

p2-alias:0x100000f80 p1-alias:0x100000f80

我們發現p1hztbhyyjmf的alias和p2的alias指向了同一塊記憶體空間,編譯器=號賦值預設淺拷貝

實現深拷貝程式設計客棧

v copyperson(person *from, person *to)

//列印

p2-alias:0x1003069a0 p1-alias:0x100000f82

我們給p2的alias重寫分配了記憶體,然後將p1的alias拷貝進去

本文標題: c/c++ 淺拷貝和深拷貝的例項詳解

本文位址:

深拷貝和淺拷貝 完整例項

1 淺拷貝 對基本資料型別進行值傳遞,對引用資料型別進行引用傳遞般的拷貝,此為淺拷貝。2 深拷貝 對基本資料型別進行值傳遞,對引用資料型別,建立乙個新的物件,並複製其內容,此為深拷貝。3 淺拷貝 clone 示例 public class student implements cloneable p...

淺拷貝和深拷貝具體詳解

當用乙個已經初始化了的自定義類型別物件去初始化另乙個新構造的物件的時候,拷貝建構函式就會被自動呼叫,也就是說,當類的物件需要拷貝時,拷貝建構函式將會被呼叫。以下情況都會呼叫拷貝建構函式 1 乙個物件以值傳遞的方式傳入函式體 2 乙個物件以值傳遞的方式從函式返回 3 乙個物件需要通過另乙個物件進行初始...

python 深拷貝和淺拷貝詳解

指向 賦值語句 b a,淺拷貝 對於乙個物件的頂層拷貝,拷貝了引用,並沒有拷貝內容copy.copy copy.copy 拷貝的是不可變型別 數字,元祖 那麼它不會進行淺拷貝,僅僅是指向 深拷貝 copy.deepcopy 只要有可變型別時,都會複製 如果用copy.copy copy.deepco...