Memmove () في C و C ++

Memmove Fy C W C



اليوم ، سوف نتعلم إحدى الوظائف المهمة للغة C و C ++ وهي وظيفة memmove (). ولكن قبل ذلك ، دعنا نلقي نظرة سريعة على أساسيات لغات C و C ++. سنناقش أيضًا الوظائف الموجودة في كلتا اللغتين C / C ++.

لغة البرمجة C سهلة وفعالة للغاية لجميع الأغراض. يمكن تنفيذ برامج مثل نظام التشغيل Windows وقواعد البيانات والمترجمين الفوريين وأدوات أخرى باستخدامه. C هي لغة رائعة للمبتدئين لتعلم الترميز بها. هذا هو السبب في أن برمجة C تُعرف باسم اللغة الأم لأنها تعمل كأساس لجميع لغات الكمبيوتر الأخرى. يعتمد أساس لغة البرمجة C ++ على أفكار البرمجة الشيئية (OOP). يمكن للمستخدم تطوير وفهم مبادئ البرنامج بسهولة لأن C ++ لها هيكل واضح. تعد لغة البرمجة C \ C ++ متعددة الاستخدامات بشكل استثنائي في أداء وظائف متعددة وتحويل متغير من نوع إلى آخر. تعد وظيفة memmove () إحدى وظائف C / C ++.







تقوم وظيفة memmove () بنقل 'عدد' البايتات في وقت واحد من محتويات كتلة الذاكرة التي يشير إليها المصدر باتجاه الموقع الذي تشير إليه الوجهة. تكون وظيفة memmove () مفيدة فقط عندما تتداخل كائنات المصدر والوجهة وتوقف السلوك غير المحدد من الحدوث. لمعرفة المزيد حول وظيفة memmove () ، دعنا نحفر بعمق ونرى كيفية تنفيذ بناء الجملة والأمثلة في وظيفة memmove ().



بناء الجملة:

إليك نفس أسلوب الكتابة وتنفيذ وظيفة memmove () لكل من اللغتين C و C ++. أولاً ، نكتب الكلمة الأساسية 'void' مما يعني أنه إذا لم تُرجع الدالة أي قيمة ، فإننا نكتب اسم الوظيفة التي نريد تنفيذها وهي الدالة memmove (). في أقواس الوظائف ، نكتب الوجهة حتى نتمكن من وضع 'عدد' بايت مع الكلمة الأساسية 'فارغة'. ثم نكتب موقع المصدر حيث نحصل على عدد البايتات.







المعلمات:

كف: عنوان موقع التخزين الذي يتم فيه نسخ البيانات.

src: عنوان موقع التخزين الذي يتم نسخ البيانات منه.



عدد: كمية البيانات المراد نسخها من المصدر إلى الوجهة.

قيمة الإرجاع:

في المقابل ، نحصل على العنوان إلى منطقة الذاكرة الهدف. يتم إرجاع الوجهة بواسطة الدالة memmove ().

مثال 1: تنفيذ دالة Memmove () في لغة C.

دعنا نبدأ في تنفيذ مثالنا الأول والبسيط للغة سي. لبدء الكتابة ، نحتاج أولاً إلى مترجم C حتى نتمكن من كتابة البرنامج وتنفيذه. لذلك ، افتح مترجم C وابدأ في تنفيذ البرنامج.

# تضمين
# تضمين

انت مين ( )
{
شار ch1 [ ] = { 'L' و 'أنا' و 'ن' و 'في' و 'x' } ؛

طول int = sizeof ( الفصل 1 ) / حجم ( الفصل 1 [ 0 ] ) ؛

printf ( 'قبل تطبيق وظيفة memmove ():' ) ؛
إلى عن على ( int أنا = 0 ؛ أنا < الطول؛ أنا ++ )
{
printf ( '٪ c' ، الفصل 1 [ أنا ] ) ؛
}

شار * ch2 = & الفصل 1 [ اثنين ] ؛
memmove ( الفصل 2 ، الفصل 1 ، sizeof ( شار ) * اثنين ) ؛

printf ( ' بعد تطبيق دالة memmove (): ' ) ؛

إلى عن على ( int أنا = 0 ؛ أنا < 5 ؛ أنا ++ )
{
printf ( '٪ c' ، الفصل 1 [ أنا ] ) ؛
}
إرجاع 0 ؛

}


نبدأ دائمًا بدمج وحدات البرنامج الأساسية بعد بدء المترجم. هذه الوحدات هي وحدات لغة سي المجمعة. نحتاج ببساطة إلى كتابة سطر واحد من التعليمات البرمجية لتضمين هذه الوحدات ، بدلاً من عشرات الأسطر من التعليمات البرمجية لإنشاء الوحدة. يقوم المؤشر '#' بإعلام المترجم بتحميل الوحدة أولاً قبل استخدام الكلمة الأساسية 'include' لإضافة الوحدة النمطية إلى البرنامج. الوحدة النمطية 'stdio.h' تعني أن المترجم يقبل البيانات من المستخدم ويظهرها للمستخدم. الوحدة الثانية من البرنامج هي '#include ' حتى نتمكن من استخدام الوظائف المرتبطة بالسلسلة في البرنامج الحالي.

بعد ذلك ، نبدأ الوظيفة main () حتى نتمكن من كتابة سطر الشفرة الفعلي الذي نريد تنفيذه في البرنامج. في السطر 6 ، نعلن اسم مصفوفة الأحرف 'ch1' من نوع الحرف. ثم نقوم بتعيين قيمة شخصية لها. بعد ذلك ، نحسب طول 'ch1' ونطبع مصفوفة الإدخال 'ch1' باستخدام 'for loop'.

بعد ذلك ، نعلن عن المؤشر إلى المصفوفة 'ch2' لحرف نوع ونخصص عنوان المصفوفة 'ch1' إلى المصفوفة 'ch2'. ثم نطبعها باستخدام عبارة printf (). دعونا نرى إخراج الرسم التوضيحي السابق:

مثال 2: تنفيذ دالة Memmove () في C ++

إليك المثال الأساسي الذي يوضح كيفية أداء وظيفة memmove () في لغة C ++. لبدء الكتابة ، نحتاج أولاً إلى C ++ IDE حتى نتمكن من كتابة البرنامج وتنفيذه. لذلك ، افتح برنامج التحويل البرمجي C ++ وابدأ في تنفيذ البرنامج.

بعد فتح المترجم ، نبدأ دائمًا بتضمين ملفات الرأس الضرورية للغة البرمجة C ++ لتشغيل البرامج. لإنشاء البرنامج واستخدام طريقة memmove () ، نقوم أولاً بتضمين ملفي الرأس الأساسيين - 'iostream' و 'cstring'. يوفر C ++ عدة طرق للعمل مع المصفوفات والسلاسل. يتم توفير هذه الوظائف للاستخدام عند تضمين ملف الرأس في برنامج مع ملف الرأس '#include ' المستخدم لنسخ عدد معين من وحدات البايت من البيانات من المصدر إلى الوجهة. يُستخدم ملف الرأس '#include ' لإدخال وإخراج البيانات من المستخدم. بعد ذلك ، نستخدم 'namespace std' القياسي في الكود الخاص بنا لاستخدام البنية القياسية للغة البرمجة C ++ حتى نتمكن من منع الكائنات والطرق والمعلمات من الرجوع إلى نفس النطاق في البرنامج بأكمله.

# تضمين
# تضمين
استخدام اسم للمحطة؛

انت مين ( )
{
شار src [ خمسون ] = '1234567890' ؛
شار ديست [ خمسون ] = '0987654321' ؛

كوت << 'قبل تطبيق memmove على الوجهة:' << بداية << نهاية.
memmove ( قسم غير مصنف في الرياض 6 ) ؛
كوت << 'بعد تطبيق memmove على الوجهة:' << اليدين

إرجاع 0 ؛
}


نبدأ في كتابة الدالة main () لبدء تنفيذ سطر فعلي من التعليمات البرمجية. في السطر 7 ، توجد مصفوفة من نوعين من حرفين بطول 50 والتي تم تعريفها على أنها 'src [50]' و 'dest [50]'. نستخدم عبارة 'cout' لطباعة الرسالة ، 'قبل تطبيق memmove () على الوجهة:'. بعد ذلك ، نقوم بتمرير المعلمة 'dest' لطباعة قيمة المصفوفة 'dest'. بعد ذلك ، يتم تطبيق وظيفة memmove () على متغير نوع الحرف الذي تم تعريفه على أنه 'src [50]' و 'dest [50]' لتداخل عدد معين من البايتات من الأصل (src) إلى الهدف (dest) مع عدد 'العد'. يحدد هذا عدد البايتات التي يتم نسخها من 'src' إلى 'dest'. كما ترى في الرسم التوضيحي التالي ، أعلنا عن رقم العد '6'.

بعد ذلك ، نستخدم العبارة 'cout' مرة أخرى لعرض الرسالة ، 'بعد تطبيق memmove () على الوجهة:' ، وتمرير المتغير 'dest' مصفوفة من النوع 'character'. لإيقاف تشغيل البرنامج ، يجب أن نستخدم تعليمة العودة في ختام البرنامج. ثم نعيد 0 إلى الوظيفة الرئيسية ، مشيرين إلى أن البرنامج تم تنفيذه بنجاح وحقق هدفه.

يمكنك أن ترى في الإخراج التالي لطريقة memmove () أنه إذا كان هناك تداخل ، على سبيل المثال ، عندما يتحرك المؤشر الأولي إلى الحرف 6 ، يستمر المؤشر في الطباعة وسوف تتداخل الأحرف التالية. تم تشغيل مقتطف كود C ++ وعرض النتائج في الصورة التالية:

استنتاج

في هذه المقالة ، تعرفنا على وظيفة memmove () في لغات البرمجة C و C ++. تحدثنا عن كيفية عمل الدالة memmove () من خلال مثال C و C ++ مع شرح مفصل لكل سطر من التعليمات البرمجية. نأمل أن تجد هذه المقالة مفيدة في تطوير معرفتك فيما يتعلق بوظيفة memmove () في C و C ++.