Tôi mới với tất cả lập trình C và tôi có một câu hỏi,cách sao chép con trỏ để trỏ trên cùng một đối tượng
Nếu tôi có cấu trúc - và tôi đang chỉ vào nó, Tôi muốn tạo một con trỏ mới để trỏ vào cùng một dữ liệu, nhưng không phải cho hai con trỏ trỏ vào cùng một đối tượng. làm cách nào tôi có thể làm điều đó mà không cần sao chép mọi trường đơn lẻ trong cấu trúc?
typedef struct
{
int x;
int y;
int z;
}mySTRUCT;
mySTRUCT *a;
mySTRUCT *b;
a->x = 1;
a->y = 2;
a->z = 3;
và bây giờ tôi muốn b đến điểm trên cùng một dữ liệu
b = *a
đó là không đúng, và trình biên dịch được la hét vào tôi
bất kỳ trợ giúp sẽ là tuyệt vời! cảm ơn bạn :)
tại sao nó * b = * a chứ không phải b = * a? Tôi không thể hiểu được sự khác biệt giữa: b = a, * b = a, b = * a, * b = * a. tôi có thể xin giải thích ngắn gọn không? – user1386966
@ user1386966: 'a' và' b' là con trỏ. '* a' và' * b' là những thứ mà chúng trỏ đến. Bạn muốn sao chép điều được trỏ đến bởi 'a', đối với thứ được trỏ đến bởi' b'. Do đó bạn viết '* b = * a'. 'b = a' thay đổi con trỏ' b' để có cùng giá trị với 'a', đó là một cách khác để nói thay đổi' b' để trỏ đến cùng một điều mà 'a' trỏ tới. 'b = * a' và' * b = a' là vô nghĩa, bởi vì bạn không thể tạo cấu trúc bằng một con trỏ. –
Thông thường của tôi tương tự, btw, là một con trỏ giống như một mảnh giấy với một địa chỉ đường phố được viết trên đó. Điều nó trỏ đến (aka "referand") giống như một tòa nhà. Bạn sẽ không nhầm lẫn một tòa nhà ('* b)' với thứ gì đó có địa chỉ của tòa nhà được viết trên đó ('b'). '* b = * a' có nghĩa là" xây dựng một tòa nhà tại địa chỉ trên 'b', và làm cho nó giống như tòa nhà có địa chỉ trên' a' ". 'b = a' có nghĩa là" sao chép địa chỉ được viết trên 'a' sang' b' ". Sự tương tự hơi yếu đi khi bạn lưu ý rằng trong C bạn có thể lấy một con trỏ tới 'a' - thậm chí cả mảnh giấy có thể có địa chỉ riêng của chúng trong C. –