淺拷貝,深拷貝

2021-08-07 12:14:12 字數 736 閱讀 5682

一、淺拷貝

含義:多個指標指向同乙個記憶體(如生活中的共享)

特點:不能修改

1.如字串常量就是淺拷貝,不允許修改

char *str1 = "hello world";

char str1[0] = 'a';//error

2.指標陣列

int main()

for(i=0;i<3;i++)

return 0;}

3.free

realloc

int *q = (int *)malloc(20*sizeof(int));   //建立新家

for(i = 0;i<10;i++)                    

free(p);                              //釋放舊位址

p = q;                                //更新新位址

q = null;                             //淺拷貝發生錯誤,多個指標不能指向同乙個記憶體,所以q = null

二、深拷貝

含義:各自記憶體互不干擾,如自己的私人物品自己隨意處理

//深拷貝  將從鍵盤中讀取的字串複製到另一陣列裡列印出

#include

#include

#include

#include

int main()

for(i = 0;i

淺拷貝 深拷貝

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...

淺拷貝 深拷貝

retain是建立乙個指標,引用物件計數加1。copy屬性表示兩個物件內容相同,新的物件retain為1 與舊有物件的引用計數無關,舊有物件沒有變化。copy減少物件對上下文的依賴。retain屬性表示兩個物件位址相同 建立乙個指標,指標拷貝 內容當然相同,這個物件的retain值 1也就是說,re...