2014-02-26 41 views
1

現在我從這篇文章中知道關於assigning one struct to another,我可以將一個結構變量分配給另一個相同類型,並且一個將發生複製。在C中分配結構的指針實例

struct Test t1; 
struct Test t2; 
t2 = t1; 

但是,如果我這樣做呢?

struct Test *t1; 
struct Test *t2; 
t1 = malloc(sizeof(struct Test)); 
t2 = malloc(sizeof(struct Test)); 
//assign t1 and t2's fields some data 
*t2 = *t1; 

在這種情況下會發生同樣的memcpy嗎?

+2

指針,是的。它*指向的是*,否(正如書面所言,'t1'無論如何都是不確定的,所以它的UB甚至可以評估它)。 – WhozCraig

+0

哦,是的,這就是我的意思。我現在編輯這個問題。 – rubndsouza

回答

3

以下

*t2 = *t1; 

確實會做一個淺拷貝。基本上,指針上的*運算符就像您使用指向的值一樣。

但一定要爲這些分配內存併爲其定義值,否則會得到未定義的行爲。

0

是的,與兩個賦值相關的類型都是相同的,所以它遵循該賦值的效果也是相同的(假設t1t2指向後面示例中的有效對象)。