前言
在c++中參數傳遞有兩種形式:值傳遞和引用傳遞。這兩種方式的區別我不在此說,自行補上,如果你不知道的話。我先上python代碼,看完我們總結一下,代碼如下:
# copy module importimport copy# number and stringa = 12a1 = aa2 = copy.copy(a)a3 = copy.deepcopy(a)# look addrprint("==========number=======")print(id(a))print(id(a1))print(id(a2))print(id(a3))s = '12345's1 = ss2 = copy.copy(s)s3 = copy.deepcopy(s)# look addrprint("==========String=======")print(id(s))print(id(s1))print(id(s2))print(id(s3))# otherstarget = { 'name': 'ckmike', 'age': 25, 'boxes':[ 'LV', 'Prada', 'KUQI' ]}target1 = targettarget2 = copy.copy(target)target3 = copy.deepcopy(target)print("==========dict-1=======")print(id(target))print(id(target1))print(id(target2))print(id(target3))print("==========dict-2=======")print(id(target['boxes']))print(id(target1['boxes']))print(id(target2['boxes']))print(id(target3['boxes']))
輸出結果:
==========number=======
10943360
10943360
10943360
10943360
==========String=======
140567123944648
140567123944648
140567123944648
140567123944648
==========dict-1=======
140567124625088
140567124625088
140567124625160
140567123938760
==========dict-2=======
140567099339272
140567099339272
140567099339272
140567099339464
總結:
對于數值、字符串而言,不管是賦值符號還是淺拷貝、深拷貝,都是引用的內存中的同一份值,變量指向同一地址。
對于非數值非字符串而言,淺拷貝只會拷貝對象的第一層,深拷貝則會把所有層都進行拷貝。
新聞熱點
疑難解答