首頁>技術>

結構體

typedef struct _string{  uint32_t len;  char *val;} string;
淺複製

淺複製複製結構體各個屬性進行復制,不會進行深度複製。包含指標的結構體只會複製指標。

 	char *s =  (char *)malloc(6);	strcpy(s, "abcdef");	string str1 = {5, s};	string str2 = str1;	printf("str2.val=%p\nstr1.val=%p\n", str2.val, str1.val);	strcpy(str2.val, "123456");	printf("str2.val=%s,str2.len=%u\nstr1.val=%s,str1.len=%d\n", 		str2.val, str2.len, str2.val, str2.len);
str2.val=0x7f87f3c05970str1.val=0x7f87f3c05970str2.val=123456,str2.len=5str1.val=123456,str1.len=5
深複製

淺複製複製結構體各個屬性進行復制,會進行深度複製。包含指標的結構體,會先申請相同的記憶體空間,然後複製內容。

string str3;str3.val = (char *)malloc(6);strcpy(str3.val, str1.val);str3.len = str1.len;printf("str1.val=%p\nstr3.val=%p\n", str1.val, str3.val);
str1.val=0x7fd998405770str3.val=0x7fd998604080str3.val=123456,str3.len=5str1.val=123456,str1.len=5
深複製與淺複製區別

淺複製與深複製對指標的複製不同。淺複製複製後兩個指標指向同一個記憶體空間。深複製是對指標指向的內容進行複製,經深複製後的指標是指向兩個不同地址的指標。完全相同時用淺複製,複製後修改用深複製。

7
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • flask框架教學:hello flask(乾貨分享)