วิธีคัดลอกอาร์เรย์ด้วย memmove() ในการเขียนโปรแกรมภาษาซี

Withi Khad Lxk Xarrey Dwy Memmove Ni Kar Kheiyn Porkaerm Phas A Si



อาร์เรย์เป็นองค์ประกอบพื้นฐานในภาษาโปรแกรม C ซึ่งทำให้โปรแกรมเมอร์สามารถเก็บข้อมูลประเภทเดียวกันจำนวนมากไว้ในตัวแปรเดียว มีบางครั้งที่โปรแกรมเมอร์อาจต้องทำซ้ำเนื้อหาของอาร์เรย์หนึ่งไปยังอีกอาร์เรย์

ฟังก์ชัน 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 ใดๆ ก็สามารถใช้มันได้