ฟังก์ชัน memmove() คืออะไร
ฟังก์ชันไลบรารี C เมมมูฟ() ใช้เพื่อคัดลอกจำนวนไบต์จากที่อยู่หน่วยความจำหนึ่งไปยังอีกที่หนึ่ง เนื่องจากไม่ได้รับผลกระทบจากพื้นที่ข้อมูลที่ทับซ้อนกัน จึงเป็นเทคนิคการคัดลอกข้อมูลที่มีประสิทธิภาพและมีประสิทธิผล เมื่อใช้งาน เมมมูฟ() ในการคัดลอกอาร์เรย์ มีบางสิ่งที่ต้องจำไว้ ฟังก์ชันจะต้องได้รับพอยน์เตอร์สองตัว ตัวหนึ่งแทนตำแหน่งหน่วยความจำต้นทางและอีกตัวเป็นตำแหน่งหน่วยความจำปลายทาง ต้องระบุจำนวนไบต์ที่คุณต้องการคัดลอกจากต้นทางไปยังปลายทางด้วย
เดอะ เมมมูฟ() เมธอดเป็นฟังก์ชันที่ยืดหยุ่นที่สามารถจัดการกับแหล่งข้อมูลที่ทับซ้อนกันและคัดลอกข้อมูลในลำดับใดก็ได้จากที่ใดก็ได้ในหน่วยความจำ ข้อเสียเพียงอย่างเดียวคือใช้เวลานานกว่าวิธีการคัดลอกแบบอื่นเล็กน้อย เมมซีปี้()
วิธีคัดลอกอาร์เรย์ด้วย memmove() ในการเขียนโปรแกรมภาษาซี
เดอะ เมมมูฟ() ฟังก์ชันถูกกำหนดไว้ใน
เป็นโมฆะ * บันทึก ( เป็นโมฆะ * เริ่ม , คอสต์ เป็นโมฆะ * src , size_t น ) ;
ตัวชี้ โมฆะ * ปลายทาง ระบุอาร์เรย์ปลายทางที่จะคัดลอกเนื้อหาของอาร์เรย์ต้นทาง ตัวชี้ไปยังอาร์เรย์ต้นทางที่เราต้องการคัดลอกคือ const โมฆะ* src . อาร์กิวเมนต์ระบุจำนวนไบต์ที่เราต้องการคัดลอกจากอาร์เรย์ต้นทางไปยังอาร์เรย์ปลายทาง size_t น .
ดูโค้ดบรรทัดต่อไปนี้ เช่น
#รวม
#รวม
นานาชาติ หลัก ( ) {
นานาชาติ source_array [ ] = { 1 , 2 , 3 , 4 , 5 } ;
นานาชาติ Destination_array [ 5 ] = { 0 } ;
size_t ขนาด = ขนาดของ ( source_array ) ;
บันทึก ( Destination_array , source_array , ขนาด ) ;
สำหรับ ( นานาชาติ ฉัน = 0 ; ฉัน < 5 ; ฉัน ++ ) {
พิมพ์ฉ ( '%d' , Destination_array [ ฉัน ] ) ;
}
กลับ 0 ;
}
อาร์เรย์ต้นทางและอาร์เรย์ปลายทางถูกกำหนดเป็นอันดับแรกในโค้ดด้านบน อาร์เรย์ปลายทางว่างเปล่าในตอนแรก แต่อาร์เรย์ต้นทางมีองค์ประกอบ 1 ถึง 5 ขนาดของ() จากนั้นจะใช้ตัวดำเนินการเพื่อกำหนดขนาดของอาร์เรย์ต้นทาง และผลลัพธ์จะถูกบันทึกไว้ในตัวแปรขนาด เนื้อหาของอาร์เรย์ต้นทางจะถูกคัดลอกไปยังอาร์เรย์ปลายทาง
เอาต์พุต
บทสรุป
ภาษาโปรแกรม C นำเสนอวิธีที่มีประสิทธิภาพและเชื่อถือได้ในการคัดลอกอาร์เรย์ด้วย เมมมูฟ() การทำงาน. ความเก่งกาจของมันมาจากความสามารถในการจัดการกับหน่วยความจำที่ทับซ้อนกัน และเนื่องจากไวยากรณ์ที่ไม่ซับซ้อน โปรเจ็กต์ C ใดๆ ก็สามารถใช้มันได้