C এবং C++ এ Memmove()

C Ebam C E Memmove



আজ, আমরা C এবং C++ ভাষার একটি গুরুত্বপূর্ণ ফাংশন শিখতে যাচ্ছি যা হল মেমমোভ() ফাংশন। তবে তার আগে, আসুন C এবং C++ ভাষার মূল বিষয়গুলিকে দ্রুত দেখে নেওয়া যাক। আমরা C/C++ উভয় ভাষাতেই কি কি ফাংশন আছে তা নিয়ে আলোচনা করব।

সি প্রোগ্রামিং ভাষা সহজ এবং সব কাজের জন্য বেশ কার্যকর। সফ্টওয়্যার যেমন উইন্ডোজ ওএস, ডেটাবেস, দোভাষী এবং অন্যান্য সরঞ্জামগুলি এর বাস্তবায়ন সম্ভব। C নতুনদের জন্য কোডিং শেখার জন্য একটি দুর্দান্ত ভাষা। এই কারণেই সি প্রোগ্রামিংকে মাতৃভাষা বলা হয় কারণ এটি অন্যান্য সমস্ত কম্পিউটার ভাষার ভিত্তি হিসাবে কাজ করে। C++ প্রোগ্রামিং ভাষার ভিত্তি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর ধারণার উপর ভিত্তি করে। ব্যবহারকারী প্রোগ্রামের নীতিগুলি সহজেই বিকাশ এবং বুঝতে পারে কারণ C++ এর একটি স্পষ্ট কাঠামো রয়েছে। C\C++ প্রোগ্রামিং ভাষা একাধিক ফাংশন সঞ্চালন এবং একটি ভেরিয়েবলকে এক প্রকার থেকে অন্য প্রকারে স্যুইচ করার ক্ষেত্রে ব্যতিক্রমী বহুমুখী। memmove() ফাংশন C/C++ এর অন্যতম ফাংশন।







memmove() ফাংশন মেমরি ব্লকের বিষয়বস্তু থেকে একই সাথে 'num' বাইট স্থানান্তর করে যা উৎস দ্বারা নির্দেশিত অবস্থানের দিকে নির্দেশিত হয়। memmove() ফাংশন শুধুমাত্র তখনই উপকারী যখন উৎস এবং গন্তব্য বস্তু ওভারল্যাপ হয় এবং অনির্ধারিত আচরণ ঘটতে বাধা দেয়। memmove() ফাংশন সম্পর্কে আরও জানতে, আসুন গভীরভাবে খনন করি এবং মেমমোভ() ফাংশনে সিনট্যাক্স এবং উদাহরণগুলি কীভাবে প্রয়োগ করা যায় তা দেখি।



বাক্য গঠন:

এখানে একই লেখার শৈলী এবং C এবং C++ উভয় ভাষার জন্য মেমমোভ() ফাংশনের বাস্তবায়ন। প্রথমে, আমরা 'void' কীওয়ার্ড লিখি যার অর্থ হল যে ফাংশনটি যদি কোনো মান না দেয়, আমরা যে ফাংশনটি বাস্তবায়ন করতে চাই তার নাম লিখি যা মেমমোভ() ফাংশন। ফাংশন বন্ধনীতে, আমরা গন্তব্য লিখি যাতে আমরা 'void' কীওয়ার্ডের সাথে 'num' বাইট স্থাপন করতে পারি। তারপরে, আমরা উৎসের অবস্থান লিখি যেখান থেকে আমরা 'সংখ্যা' বাইট পাই।







পরামিতি:

হাত: স্টোরেজ অবস্থানের ঠিকানা যেখানে ডেটা কপি করা হয়েছে।

src: স্টোরেজ অবস্থানের ঠিকানা যেখান থেকে ডেটা কপি করা হয়েছে।



গণনা: উৎস থেকে গন্তব্যে কপি করার জন্য ডেটার পরিমাণ।

ফেরত মূল্য:

বিনিময়ে, আমরা লক্ষ্য মেমরি এলাকায় ঠিকানা পেতে. Dest মেমমোভ() ফাংশন দ্বারা ফেরত দেওয়া হয়।

উদাহরণ 1: C-তে Memmove() ফাংশনের বাস্তবায়ন

আসুন সি ভাষার আমাদের প্রথম এবং সহজ উদাহরণ বাস্তবায়ন করা শুরু করি। লেখা শুরু করার জন্য, আমাদের প্রথমে একটি সি কম্পাইলার প্রয়োজন যাতে আমরা প্রোগ্রামটি লিখতে এবং কার্যকর করতে পারি। এর জন্য, সি কম্পাইলারটি খুলুন এবং প্রোগ্রামটি বাস্তবায়ন শুরু করুন।

# অন্তর্ভুক্ত করুন
#include

int প্রধান ( )
{
char ch1 [ ] = { 'এল' , 'আমি' , 'n' , 'ভিতরে' , 'এক্স' } ;

int length = sizeof ( ch1 ) / আকার ( ch1 [ 0 ] ) ;

printf ( 'memmove() ফাংশন প্রয়োগ করার আগে: ' ) ;
জন্য ( int i = 0 ; i < দৈর্ঘ্য; i++ )
{
printf ( '% গ' , ch1 [ i ] ) ;
}

চর * ch2 = এবং ch1 [ দুই ] ;
memmove ( ch2, ch1, sizeof ( চর ) * দুই ) ;

printf ( ' \n \n memmove() ফাংশন প্রয়োগ করার পরে: ' ) ;

জন্য ( int i = 0 ; i < 5 ; i++ )
{
printf ( '%c' , ch1 [ i ] ) ;
}
প্রত্যাবর্তন 0 ;

}


আমরা সর্বদা কম্পাইলার শুরু করার পরে মূল প্রোগ্রাম মডিউলগুলি অন্তর্ভুক্ত করে শুরু করি। এই মডিউলগুলি হল বান্ডিল সি ল্যাঙ্গুয়েজ মডিউল। এই মডিউলগুলিকে অন্তর্ভুক্ত করার জন্য আমাদের কেবল কোডের একটি লাইন টাইপ করতে হবে, মডিউলটি তৈরি করতে কয়েক ডজন লাইনের কোডের বিপরীতে। '#' সূচকটি প্রোগ্রামে মডিউল যোগ করার জন্য 'অন্তর্ভুক্ত' কীওয়ার্ড ব্যবহার করার আগে প্রথমে মডিউলটি লোড করতে অনুবাদককে জানায়। 'stdio.h' মডিউলটির অর্থ হল কম্পাইলার ব্যবহারকারীর কাছ থেকে ডেটা গ্রহণ করে এবং ব্যবহারকারীকে দেখায়। প্রোগ্রামটির দ্বিতীয় মডিউল হল “#include ” যাতে আমরা বিদ্যমান প্রোগ্রামে স্ট্রিং-সম্পর্কিত ফাংশন ব্যবহার করতে পারি।

তারপর, আমরা main() ফাংশন শুরু করি যাতে আমরা কোডের প্রকৃত লাইন লিখতে পারি যা আমরা প্রোগ্রামে প্রয়োগ করতে চাই। 6 লাইনে, আমরা টাইপ ক্যারেক্টারের ক্যারেক্টার অ্যারের নাম 'ch1' ঘোষণা করি। তারপর, আমরা এটিতে একটি অক্ষর মান নির্ধারণ করি। এর পরে, আমরা 'ch1' এর দৈর্ঘ্য গণনা করি এবং 'for loop' ব্যবহার করে ইনপুট অ্যারে 'ch1' প্রিন্ট করি।

এর পরে, আমরা একটি টাইপ অক্ষরের “ch2” অ্যারেতে পয়েন্টার ঘোষণা করি এবং “ch2” অ্যারেতে “ch1” অ্যারের ঠিকানা বরাদ্দ করি। তারপর, আমরা printf() স্টেটমেন্ট ব্যবহার করে এটি প্রিন্ট করি। চলুন আগের চিত্রের আউটপুট দেখি:

উদাহরণ 2: C++ এ Memmove() ফাংশনের বাস্তবায়ন

এখানে একটি মৌলিক উদাহরণ যা দেখায় কিভাবে মেমমোভ() ফাংশন C++ ভাষায় কাজ করে। লেখা শুরু করার জন্য, আমাদের প্রথমে একটি C++ IDE দরকার যাতে আমরা প্রোগ্রামটি লিখতে এবং চালাতে পারি। এর জন্য, C++ কম্পাইলার খুলুন এবং প্রোগ্রাম বাস্তবায়ন শুরু করুন।

কম্পাইলার খোলার পরে, আমরা সবসময় হেডার ফাইলগুলি অন্তর্ভুক্ত করে শুরু করি যা প্রোগ্রামগুলি চালানোর জন্য C++ প্রোগ্রামিং ভাষার জন্য প্রয়োজনীয়। প্রোগ্রামটি তৈরি করতে এবং মেমমোভ() পদ্ধতি ব্যবহার করতে, আমরা প্রথমে দুটি মৌলিক হেডার ফাইল অন্তর্ভুক্ত করি - 'iostream' এবং 'cstring'। C++ অ্যারে এবং স্ট্রিংগুলির সাথে কাজ করার জন্য বিভিন্ন উপায় প্রদান করে। এই ফাংশনগুলি ব্যবহার করার জন্য উপলব্ধ করা হয় যখন হেডার ফাইলটি '#include ' হেডার ফাইল সহ একটি প্রোগ্রামে অন্তর্ভুক্ত করা হয় যা উৎস থেকে গন্তব্যে ডেটার নির্দিষ্ট সংখ্যক বাইট কপি করার জন্য ব্যবহৃত হয়। হেডার ফাইল '#include '  ব্যবহারকারীর ডেটা ইনপুট এবং আউটপুট উভয়ের জন্যই ব্যবহার করা হয়। তারপর, আমরা C++ প্রোগ্রামিং ভাষার স্ট্যান্ডার্ড সিনট্যাক্স ব্যবহার করার জন্য আমাদের কোডে স্ট্যান্ডার্ড 'নেমস্পেস std' ব্যবহার করি যাতে আমরা সমগ্র প্রোগ্রাম জুড়ে বস্তু, পদ্ধতি এবং প্যারামিটারগুলিকে একই সুযোগ উল্লেখ করা থেকে আটকাতে পারি।

# অন্তর্ভুক্ত করুন
# অন্তর্ভুক্ত
নামস্থান std ব্যবহার করে;

int প্রধান ( )
{
char src [ পঞ্চাশ ] = '1234567890' ;
char dest [ পঞ্চাশ ] = '0987654321' ;

cout << 'গন্তব্যে যাওয়ার মেম প্রয়োগ করার আগে:' << শুরু << endl;
memmove ( গন্তব্য, src, 6 ) ;
cout << 'মেম প্রয়োগ করার পরে গন্তব্যে যান:' << হাত

প্রত্যাবর্তন 0 ;
}


আমরা মূল() ফাংশন লিখতে শুরু করি কোডের একটি প্রকৃত লাইনের নির্বাহ শুরু করতে। লাইন 7-এ, দৈর্ঘ্য 50 এর একটি দুই-অক্ষর টাইপ অ্যারে রয়েছে যা 'src[50]' এবং 'dest[50]' হিসাবে ঘোষণা করা হয়েছে। আমরা বার্তাটি প্রিন্ট করার জন্য 'cout' স্টেটমেন্ট ব্যবহার করি, 'গন্তব্যে মেমমোভ() প্রয়োগ করার আগে: '। তারপর, আমরা 'dest' অ্যারের মান প্রিন্ট করতে 'dest' প্যারামিটারটি পাস করি। তারপরে, memmove() ফাংশনটি 'src[50]' এবং 'dest[50]' হিসাবে ঘোষিত অক্ষর টাইপ ভেরিয়েবলে প্রয়োগ করা হয় যাতে মূল (src) থেকে লক্ষ্য (গন্তব্য) পর্যন্ত নির্দিষ্ট সংখ্যক বাইটকে ওভারল্যাপ করা হয়। 'গণনা' এর সংখ্যা। এটি 'src' থেকে 'dest'-এ কপি করা বাইটের সংখ্যা চিহ্নিত করে। আপনি নিম্নলিখিত চিত্রে দেখতে পাচ্ছেন, আমরা '6' গণনা সংখ্যা ঘোষণা করেছি।

এর পরে, আমরা আবার 'cout' স্টেটমেন্ট ব্যবহার করি মেসেজ প্রদর্শন করতে, 'After Applying memmove() to Destination: ', এবং 'character' টাইপের ভেরিয়েবল 'dest' অ্যারে পাস করি। প্রোগ্রামটি চালানো বন্ধ করতে, আমাদের অবশ্যই প্রোগ্রামের উপসংহারে একটি রিটার্ন স্টেটমেন্ট ব্যবহার করতে হবে। তারপরে আমরা মূল ফাংশনে 0 ফিরে আসি, এটি নির্দেশ করে যে প্রোগ্রামটি সফলভাবে কার্যকর হয়েছে এবং এর উদ্দেশ্য অর্জন করেছে।

আপনি memmove() পদ্ধতির নিম্নলিখিত আউটপুটে দেখতে পাচ্ছেন যে যদি ওভারল্যাপিং থাকে, উদাহরণস্বরূপ, যখন প্রাথমিক পয়েন্টারটি অক্ষর 6 এ চলে যায়, পয়েন্টারটি মুদ্রণ করতে থাকে এবং নিম্নলিখিত অক্ষরগুলি ওভারল্যাপ হবে। এই C++ কোড স্নিপেট চালানো হয়েছিল এবং ফলাফলগুলি নিম্নলিখিত ছবিতে প্রদর্শিত হয়:

উপসংহার

এই নিবন্ধে, আমরা C এবং C++ প্রোগ্রামিং ভাষায় মেমমোভ() ফাংশন সম্পর্কে শিখেছি। আমরা কোডের প্রতিটি লাইনের বিশদ ব্যাখ্যা সহ C এবং C++ এর উদাহরণের মাধ্যমে মেমমোভ() ফাংশন কীভাবে কাজ করে সে সম্পর্কে কথা বলেছি। আমরা আশা করি যে আপনি এই নিবন্ধটি C এবং C++ এ মেমমোভ() ফাংশন সম্পর্কে আপনার জ্ঞান বিকাশে সহায়ক বলে মনে করবেন।