C++ পয়েন্টার পাটিগণিত

C Payentara Patiganita



এই নিবন্ধটি C++ এ পয়েন্টার গাণিতিক সম্পর্কে। পয়েন্টার হল ভেরিয়েবল যা ডেটার মেমরি অ্যাড্রেস সংরক্ষণ করে। পয়েন্টার পাটিগণিত হল C++ প্রোগ্রামিং ভাষার জগতে একটি শক্তিশালী বৈশিষ্ট্য যা আমাদেরকে বিভিন্ন গাণিতিক ক্রিয়াকলাপ মোকাবেলা করার অনুমতি দেয় যেখানে যোগ, গুণ, ভাগ, বৃদ্ধি, হ্রাস এবং বিয়োগ আমাদের মেমরি বাফারগুলিতে নতুন মেমরি ঠিকানা বিকাশের জন্য একটি পয়েন্টার জড়িত। . একটি পয়েন্টার পাটিগণিত সহজেই গতিশীল মেমরি বরাদ্দ তৈরি করে। এই C++ নিবন্ধে, আমরা শিখব কিভাবে পয়েন্টারের সাহায্যে বিভিন্ন উপায়ে মেমরি অ্যাড্রেস ম্যানিপুলেট করা যায় এবং সঠিক নির্দেশিকা ও উদাহরণ প্রদান করা যায়।

দৃশ্যকল্প 1: পয়েন্টার বৃদ্ধি এবং হ্রাস অপারেশন সম্পাদন করে

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







#অন্তর্ভুক্ত করুন
নামস্থান std ব্যবহার করে;
const int Arr_Max = 5 ;
int প্রধান ( ) {
int  কোথায় [ Arr_Max ] = { বিশ , 150 , 270 } ;
int * ptr; // ঘোষণা নির্দেশক
ptr = var;
জন্য ( int i = 0 ; i < Arr_Max; i++ ) {
std::cout << 'উপাদানের মেমরি ঠিকানা হল: [' << i << '] = ' ;
std::cout << ptr << endl;
cout << 'ঠিকানার বিপরীতে মান হল [' << i << '] = ' ;
cout << * ptr << endl;
std::cout << 'পয়েন্টার সফলভাবে বৃদ্ধি পেয়েছে' << endl;
ptr++;
}
std::cout << 'কমানোর আগে পয়েন্টার ঠিকানা' << ptr << endl;
ptr--;
std::cout << 'কমানোর পরে পয়েন্টার ঠিকানা' << ptr << endl;
ফিরে 0 ;
}


এখানে, আমরা শুরুতেই কোডে একটি প্রয়োজনীয় লাইব্রেরি সংজ্ঞায়িত করি: “ ”। আমরা মেমরিতে স্থান সংরক্ষণ করার জন্য একটি মেমরি বরাদ্দ সংজ্ঞায়িত করি যা 'Arr_Max=5'। প্রধান ফাংশনে, আমরা অ্যারে শুরু করি এবং সেই অ্যারেতে মেমরির আকার পাস করি। এর পরে, মেমরিতে মেমরি ঠিকানা নির্দেশ করার জন্য 'ptr' পয়েন্টার ঘোষণারও প্রয়োজন।



ঠিকানা অ্যাক্সেস করার জন্য আমরা পয়েন্টারে অ্যারে পাস করি। আমরা সবাই জানি, অ্যারে সবসময় বিভিন্ন অবস্থানে একাধিক আইটেম ধারণ করে। সুতরাং, অ্যারের প্রতিটি উপাদান অ্যাক্সেস করার জন্য আমাদের 'হেল্প' পয়েন্টার সহ একটি লুপের প্রয়োজন। প্রতিবার লুপ চালানো হলে, আমরা পয়েন্টার অ্যারিথমেটিক “ptr++” ইনক্রিমেন্ট অপারেটরের সাহায্যে এই ঠিকানার বিপরীতে মেমরি ঠিকানা এবং মানগুলি পাই যা মেমরির ঠিকানাটিকে মেমরির পরবর্তী ঠিকানায় স্থানান্তরিত করে। লুপ এক্সিকিউশন চক্র একটি অ্যারের আকারের উপর নির্ভর করে। লুপের বাইরে, আমরা শুধুমাত্র 'ptr- -' ডিক্রিমেন্ট পয়েন্টার ব্যবহার করে পয়েন্টারটিকে আগের মেমরির ঠিকানায় ফিরিয়ে আনতে চাই।



Execute>Compile & Run অপশনে ক্লিক করে এই কোডটি কার্যকর করুন এবং আপনি নিম্নলিখিত আউটপুট পাবেন:






আশা করি, এই আউটপুট বোঝা সহজ। মেমরি ঠিকানা এবং মান পরিবর্তন করা হয়. একটি অবস্থান থেকে পয়েন্টার স্থানান্তর শুধুমাত্র C++ এ ইনক্রিমেন্ট পয়েন্টার গাণিতিক থেকে সম্ভব।

দৃশ্যকল্প 2: C++ এ দুটি পয়েন্টার বিয়োগ করা

এই পরিস্থিতিতে, আমরা শিখব কিভাবে C++ এ দুই বা ততোধিক পয়েন্টার বিয়োগ করা যায়। সমস্ত গাণিতিক ক্রিয়াকলাপ যেগুলিতে বিয়োগ করা হয় সেগুলি অত্যাবশ্যকীয় প্রক্রিয়া কারণ আমরা একই সাথে দুটি পয়েন্টার বিয়োগ করতে পারি যদি এবং শুধুমাত্র যদি তাদের একই ডেটা টাইপ থাকে।



অন্যান্য ক্রিয়াকলাপ যেমন যোগ, গুণ এবং ভাগ পয়েন্টারে সম্ভব নয় কারণ সেগুলি মেমরি অ্যাড্রেসিংয়ে কোনও অর্থ রাখে না। কোড স্নিপেট নিম্নলিখিত সংযুক্ত করা হয়:

# অন্তর্ভুক্ত করুন
int প্রধান ( ) {
সে ইশারা করে [ ] = { 23 , 36 , 42 , 51 , 62 , 77 , ৮৯ , 96 , 100 } ;
int * ptrr1 = এবং যে [ 3 ] ; // তৃতীয় উপাদান নির্দেশক ( 42 )
int * ptrr2 = এবং যে [ 6 ] ; // ষষ্ঠ উপাদান নির্দেশক ( ৮৯ )
ptrdiff_t ptrs বিয়োগ = ptrr2 - ptrr1;

std::cout << 'এই ঠিকানার মধ্যে পার্থক্য হল:' << ptrs বিয়োগ << 'উপাদান' << std::endl;
ফিরে 0 ;
}


বিয়োগ অপারেশন C++ এ মেমরি ঠিকানার মধ্যে পার্থক্য খুঁজে বের করছে। প্রধান ফাংশনে, আমরা একটি অ্যারে নিই যা বিভিন্ন সূচকে বিভিন্ন মান ধারণ করে। একটি অ্যারেতে, প্রতিটি সূচকের একটি আলাদা মেমরি অবস্থান রয়েছে। আমরা শুধুমাত্র একটি পয়েন্টার পাটিগণিতের সাহায্যে দুটি পয়েন্টারের মধ্যে পার্থক্য খুঁজে পেতে পারি। এখানে, আমরা একটি বিশেষ পয়েন্টার টাইপ 'ptrdiff_t' ব্যবহার করি যেটি অবশ্যই C++ এ দুই বা ততোধিক পয়েন্টারের মধ্যে পার্থক্য খুঁজে বের করতে ব্যবহার করতে হবে।

এই কোডের আউটপুট নিম্নলিখিত সংযুক্ত করা হয়েছে:


এই ঠিকানাগুলির মধ্যে পার্থক্যটি উপাদান ভিস দ্বারা যা 3।

দৃশ্যকল্প 3: C++ এ দুই বা তার বেশি পয়েন্টার তুলনা করুন

এই দৃশ্যে, আমরা শিখব কিভাবে বিভিন্ন রিলেশনাল অপারেটর যেমন “==”, “<=”, “>=”, “<”, ”>” ব্যবহার করে C++ এ বিভিন্ন পয়েন্টার তুলনা করা যায়। আমরা শুধুমাত্র পয়েন্টার তুলনা করতে পারি যদি তারা একই অ্যারের উপাদানগুলির ঠিকানা নির্দেশ করে। মনে রাখবেন যে দুটি পয়েন্টারকে বিভিন্ন ধরণের সাথে তুলনা করা অনির্ধারিত আচরণের কারণ হতে পারে। পয়েন্টার তুলনা সম্পর্কিত কোড স্নিপেট নিম্নলিখিত উল্লেখ করা হয়েছে:

# অন্তর্ভুক্ত করুন
নামস্থান std ব্যবহার করে;
int প্রধান ( )
{
int arr1 [ 10 ] = { 4 , 7 , 9 , এগারো , 14 , 16 , 18 , বিশ , 22 , 25 } ;
int * ptr1 = এবং arr1 [ 3 ] ;
int * ptr2 = এবং arr1 [ 6 ] ;
int * ptr3 = এবং arr1 [ 8 ] ;
int * ptr4 = এবং arr1 [ 9 ] ;
যদি ( ptr1 ==ptr2 )
{
std::cout << 'পয়েন্টার সমান' << endl;
}
অন্য যদি ( ptr3 < =ptr4 )
{
std::cout << 'ptr3 ptr4 এর থেকে কম বা সমান' << endl ;;
}
অন্য
{
std::cout << 'পয়েন্টার কোন পর্যায়ে তুলনা করা হয় না' << endl;
}
ফিরে 0 ;
}


এখানে, আমরা 10টি উপাদান সহ একটি অ্যারে নিই। আমরা চারটি পয়েন্টার ঘোষণা করি যা অ্যারের একটি ভিন্ন সূচক নির্দেশ করে। এর পরে, আমরা প্রদত্ত কোডে দেখা বিভিন্ন পরিস্থিতিতে এই চারটি পয়েন্টার তুলনা করি। 'যদি' অবস্থায়, 'ptr1' পয়েন্টারটি 'ptr2' পয়েন্টারের সমান কিনা তা পরীক্ষা করুন এবং তারপরে 'পয়েন্টার সমান' প্রিন্ট করুন। যখন আমাদের একাধিক শর্ত থাকে যেখানে আমরা 'ptr3' পয়েন্টারটি 'ptr4' পয়েন্টারের সমান কি না তা পরীক্ষা করতে 'else if' শর্তটি ব্যবহার করি। যে সব পরে, ক্লিক করুন এক্সিকিউট > কম্পাইল ও রান বিকল্প

এই কোডের আউটপুট নিম্নলিখিত সংযুক্ত করা হয়েছে:


এটি কনসোল স্ক্রিনে একটি বৈধ অবস্থা প্রদর্শন করে এবং সংকলন থেকে প্রস্থান করে। 'ptr3' পয়েন্টারটিতে একটি মান রয়েছে যা 'ptr4' পয়েন্টার পয়েন্টার মানের থেকে কম বা সমান।

দৃশ্য 4: পয়েন্টার পাটিগণিত সহ একটি বিজোড় সংখ্যা প্রদর্শন করুন

এখানে, আমরা দেখব কিভাবে আমরা একটি পূর্ণসংখ্যার অ্যারের জন্য মেমরিকে গতিশীলভাবে বরাদ্দ করতে পারি। এই ক্ষেত্রে সম্পর্কিত কোড স্নিপেট নিম্নলিখিত দেওয়া হয়েছে:

# অন্তর্ভুক্ত করুন
int প্রধান ( ) {
int সংখ্যা [ ] = { 1 , 12 , 33 , 24 , পনের , 776 , 71 , 18 , 29 , পঞ্চাশ } ;
int * ptrr = সংখ্যা;
std::cout << 'অ্যারেতে বিজোড় সংখ্যা:' ;
জন্য ( int i = 0 ; i < 10 ; ++আমি ) {
যদি ( * ptrr % 2 ! = 0 ) {
std::cout << * ptrr << '' ;
}
ptrr++;
}
std::cout << std::endl;
ফিরে 0 ;
}


প্রধান ফাংশনে, আমরা একটি অ্যারে নিই যাতে 10টি উপাদান রয়েছে। অ্যারের বিজোড় সংখ্যা পরীক্ষা করার জন্য আমাদের একটি পয়েন্টার দরকার যা অ্যারের সমস্ত উপাদানকে নির্দেশ করে। 'এর জন্য' লুপে, একটি অ্যারের বর্তমান উপাদানকে ভাগ করে বিজোড় সংখ্যাটি পরীক্ষা করুন। একটি অ্যারের একটি উপাদান চেক করার পরে পয়েন্টার কাউন্টার বৃদ্ধি করা হয়।

কোডটি কার্যকর করার পরে, আউটপুটটি কনসোল স্ক্রিনে প্রদর্শিত হয় যা নিম্নলিখিতটিতে দেওয়া হয়েছে:


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

উপসংহার

আমরা এখানে উপসংহারে পৌঁছেছি যে পয়েন্টার পাটিগণিত হল সবচেয়ে কার্যকরী টুল যা C++ এ বিভিন্ন অপারেশন করে। নিশ্চিত করুন যে পয়েন্টারটি একই ডেটা টাইপ আছে এমন একটি অ্যারের মান বৃদ্ধি বা হ্রাস করে। আমরা C++ প্রোগ্রামিং ল্যাঙ্গুয়েজে পয়েন্টার অ্যারিথমেটিক এর সাহায্যে একটি অ্যারের মেমরি অ্যাড্রেসের মাধ্যমে তার মান তুলনা করতে পারি। আমরা পয়েন্টার পাটিগণিতের সাহায্যে অ্যারেটি অতিক্রম করতে পারি এবং সহজেই মেমরি পরিচালনা করতে পারি।