כיצד להעתיק מערכים עם memmove() בתכנות C

Kyzd Lh Tyq M Rkym M Memmove Btknwt C



מערכים הם מרכיב בסיסי בשפת התכנות C, המאפשרת למתכנת לאחסן פריטים רבים מאותו סוג נתונים במשתנה בודד. יש מקרים שבהם מתכנת יצטרך לשכפל את התוכן של מערך אחד לאחר.

מהי הפונקציה memmove()?

פונקציית ספריית C memmove() משמש להעתקת מספר מסוים של בתים מכתובת זיכרון אחת לאחרת. בשל העובדה שהוא אינו מושפע מאזורי נתונים חופפים, זוהי טכניקה יעילה ופרודוקטיבית להעתקת נתונים. כשמשתמש memmove() כדי להעתיק מערך, יש לזכור כמה דברים. תחילה יש לתת לפונקציה שני מצביעים, האחד מייצג את מיקום זיכרון המקור והשני את מיקום זיכרון היעד. יש לציין גם את כמות הבתים שברצונך להעתיק מהמקור ליעד.

ה memmove() השיטה היא פונקציה גמישה שיכולה לטפל במקורות חופפים ולהעתיק נתונים בכל סדר מכל מקום בזיכרון. החיסרון היחיד הוא שזה לוקח קצת יותר זמן משיטות העתקה אחרות כמו memcpy().







כיצד להעתיק מערכים עם memmove() בתכנות C

ה memmove() הפונקציה מוגדרת ב- הספרייה ויש לו את התחביר:



בָּטֵל * memmove ( בָּטֵל * הַתחָלָה , const בָּטֵל * src , size_t נ ) ;

המצביע בטל* גורל מציין את מערך היעד, אליו יועתק התוכן של מערך המקור. המצביע למערך המקור שברצוננו להעתיק הוא const void* src . מספר הבתים שברצוננו להעתיק ממערך המקור למערך היעד מצוין על ידי הארגומנט size_t n .



עיין בשורת הקוד הבאה, למשל:





#include

#include

int רָאשִׁי ( ) {

int מערך_מקור [ ] = { 1 , 2 , 3 , 4 , 5 } ;

int מערך_יעד [ 5 ] = { 0 } ;

size_t גודל = מידה של ( מערך_מקור ) ;

memmove ( מערך_יעד , מערך_מקור , גודל ) ;

ל ( int אני = 0 ; אני < 5 ; אני ++ ) {

printf ( '%d' , מערך_יעד [ אני ] ) ;

}

לַחֲזוֹר 0 ;

}

מערך המקור ומערך מערך היעד מוגדרים לראשונה בקוד למעלה. מערך היעד ריק בתחילה, אך למערך המקור יש אלמנטים 1 עד 5. ה מידה של() לאחר מכן נעשה שימוש באופרטור כדי לקבוע את גודל מערך המקור, והתוצאה נשמרת במשתנה הגודל. התוכן של מערך המקור מועתק אל מערך היעד.

תְפוּקָה



סיכום

שפת התכנות C מציעה דרך יעילה ומהימנה להעתקת מערכים עם memmove() פוּנקצִיָה. הרבגוניות שלו נובעת מהיכולת שלו להתמודד עם זיכרון חופף, ובגלל התחביר הפשוט שלו, כל פרויקט C יכול להשתמש בו.