คำถามติดแท็ก dereference


3
ทำไมโอเปอเรเตอร์ลูกศร (->) ใน C จึงมีอยู่
ตัวดำเนินการ dot ( .) ใช้เพื่อเข้าถึงสมาชิกของ struct ในขณะที่โอเปอเรเตอร์ arrow ( ->) ใน C ใช้เพื่อเข้าถึงสมาชิกของ struct ที่อ้างอิงโดยตัวชี้ที่เป็นปัญหา ตัวชี้ไม่มีสมาชิกใด ๆ ที่สามารถเข้าถึงได้ด้วยตัวดำเนินการ dot (จริง ๆ แล้วเป็นเพียงตัวเลขที่อธิบายตำแหน่งในหน่วยความจำเสมือนดังนั้นจึงไม่มีสมาชิกใด ๆ ) ดังนั้นจะไม่มีความกำกวมหากเราเพิ่งกำหนดตัวดำเนินการจุดเพื่อยกเลิกการลงทะเบียนตัวชี้โดยอัตโนมัติหากมีการใช้งานบนตัวชี้ เหตุใดผู้สร้างภาษาจึงตัดสินใจสร้างสิ่งที่ซับซ้อนมากขึ้นด้วยการเพิ่มโอเปอเรเตอร์ที่ไม่จำเป็น การตัดสินใจออกแบบครั้งใหญ่คืออะไร?
264 c  pointers  dereference 

2
กฎการลงทะเบียนอัตโนมัติที่ถูกต้องของ Rust คืออะไร
ฉันเรียนรู้ / ทดลองกับสนิมและในความสง่างามทั้งหมดที่ฉันพบในภาษานี้มีลักษณะเฉพาะอย่างหนึ่งที่ทำให้ฉันงงงัน ตัวชี้การเกิดสนิมโดยอัตโนมัติเมื่อทำการเรียกเมธอด ฉันทำแบบทดสอบเพื่อกำหนดพฤติกรรมที่แน่นอน: struct X { val: i32 } impl std::ops::Deref for X { type Target = i32; fn deref(&self) -> &i32 { &self.val } } trait M { fn m(self); } impl M for i32 { fn m(self) { println!("i32::m()"); } } impl M for X { …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.