C語言中深拷貝和淺拷貝

2021-08-17 22:27:25 字數 960 閱讀 4887

1、淺拷貝指的是多個指標指向同一段記憶體;

比如字串常量,字串常量在乙個工程中,不管定義多少次,在記憶體只有乙份,它屬於淺拷貝。

下面就舉乙個淺拷貝的例子:定義乙個陣列buf,從鍵盤輸入三個字串,並將其拷貝到陣列arr中。

它輸出的是三個第三次輸入的,而沒有輸出前兩次輸入的,分析一下原因

其中的buf相當於乙個公用的地方,第二次輸入時第一次輸入的已經結束了,第三次輸入時第二次輸入的已經結束了,

所以輸出時是三個第三次輸出的字串。

2、深拷貝:每個指標指向單獨的記憶體。

首先建立乙個動態記憶體arr,用於儲存buf中輸入的字串,它的arr陣列每個格仔裡所儲存的並不是同乙個位址,它分別指向三個不同的位址。所以它輸出的三個字串和輸入的三個字串相同。

C語言中的深拷貝和淺拷貝

c語言中的深拷貝和淺拷貝 define crt secure no warnings include include include typedef struct studentstudent void main 錯誤 if s2.title null 要想實現深拷貝,那麼必須給s2.title也分...

C語言 淺拷貝和深拷貝

淺拷貝 首先看下面這段 include include include typedef struct node 定義了乙個結構體 s node int main 執行結果為 node2 node1 僅僅完成淺拷貝 僅會將結構體變數的size,data儲存的值給node2 data指向的空間以及其儲存...

C 淺拷貝和深拷貝

class test test const test t val new int t.val test private int val 現在定義兩個物件,test t1 9 test t2 t1 如果你不提供copy建構函式 注釋掉的那個 那麼t1和t2的成員 val指向同乙個物件,當析構的時候,同...