কম্পিউটার

বিভিন্ন পয়েন্টার অপারেশন এবং সি ল্যাঙ্গুয়েজে পয়েন্টার নিয়ে সমস্যা কি?


একটি পয়েন্টার হল একটি ভেরিয়েবল যার মান হল অন্য একটি ভেরিয়েবলের ঠিকানা, অর্থাৎ মেমরি অবস্থানের সরাসরি ঠিকানা। যেকোনো পরিবর্তনশীল বা ধ্রুবকের মতো, যেকোনো পরিবর্তনশীল ঠিকানা সংরক্ষণ করার জন্য এটি ব্যবহার করার আগে আপনাকে অবশ্যই একটি পয়েন্টার ঘোষণা করতে হবে।

নিম্নলিখিত বিবৃতিটি বিবেচনা করুন -

int qty = 179;

মেমরিতে ভেরিয়েবলের উপস্থাপনা নিম্নরূপ -

বিভিন্ন পয়েন্টার অপারেশন এবং সি ল্যাঙ্গুয়েজে পয়েন্টার নিয়ে সমস্যা কি?

আপনি নিম্নরূপ একটি পয়েন্টার ঘোষণা করতে পারেন -

Int *p;

এর মানে 'p' হল একটি পয়েন্টার ভেরিয়েবল যা অন্য পূর্ণসংখ্যা ভেরিয়েবলের ঠিকানা ধারণ করে।

ঠিকানা অপারেটর (&) একটি পয়েন্টার ভেরিয়েবল শুরু করতে ব্যবহৃত হয়।

উদাহরণ −

int qty = 175;
int *p;
p= &qty;

বিভিন্ন পয়েন্টার অপারেশন এবং সি ল্যাঙ্গুয়েজে পয়েন্টার নিয়ে সমস্যা কি?

ভেরিয়েবলের মান অ্যাক্সেস করতে, ইনডাইরেকশন অপারেটর (*) ব্যবহার করা হয়।

যেমন −

বিভিন্ন পয়েন্টার অপারেশন এবং সি ল্যাঙ্গুয়েজে পয়েন্টার নিয়ে সমস্যা কি?

'*' ঠিকানায় মান হিসাবে বিবেচনা করা যেতে পারে।

দুটি বিবৃতি নিম্নলিখিত বিবৃতি -

এর সমতুল্য
 p = &qty;
 n = *p; n =qty

বিভিন্ন পয়েন্টার অপারেশন

C ভাষায় পয়েন্টার অপারেশনগুলি নীচে ব্যাখ্যা করা হয়েছে -

  • অ্যাসাইনমেন্ট − আমরা &(ঠিকানা অপারেটর) ব্যবহার করে একটি পয়েন্টারে একটি ঠিকানা বরাদ্দ করতে পারি।

  • মান খোঁজা − এটি ডিরেফারেন্সিং ছাড়া আর কিছুই নয়, যেখানে * অপারেটর অবস্থানে নির্দেশিত স্থানে সংরক্ষিত মান দেয়৷

  • পয়েন্টার ঠিকানা নেওয়া − অন্যান্য ভেরিয়েবলের মতো, পয়েন্টার ভেরিয়েবলের একটি ঠিকানার পাশাপাশি একটি মানও থাকে, ঠিকানা অপারেটরের সাহায্যে আমরা খুঁজে পেতে পারি যে পয়েন্টারটি নিজেই সংরক্ষিত ছিল৷

  • পয়েন্টারে একটি পূর্ণসংখ্যা যোগ করা − আমরা একটি পয়েন্টারে একটি পূর্ণসংখ্যা বা একটি পূর্ণসংখ্যাতে একটি পয়েন্টার যোগ করতে + অপারেটর ব্যবহার করতে পারি। এখানে, উভয় ক্ষেত্রেই int-কে টাইপের নির্দেশিত বাইটের সংখ্যা দিয়ে গুণ করা হয় এবং ফলাফলটি মূল ঠিকানায় যোগ করা হয়।

  • একটি পয়েন্টার বৃদ্ধি করা হচ্ছে − এটি একটি অ্যারে উপাদান যা অ্যারের পরবর্তী উপাদানে চলে যায়৷

  • পয়েন্টার থেকে একটি int বিয়োগ করা - আমরা একটি পয়েন্টার থেকে একটি পূর্ণসংখ্যা বিয়োগ করতে - (মাইনাস) অপারেটর ব্যবহার করছি। টাইপের দিকে নির্দেশিত বাইটের সংখ্যা দিয়ে পূর্ণসংখ্যাকে গুণ করা হয় এবং ফলাফলটি মূল ঠিকানা থেকে বিয়োগ করা হয়।

  • একটি পয়েন্টার হ্রাস করা − ডিক্রিমেন্টিং পয়েন্টার, আগের জায়গায় আগের অবস্থানে নির্দেশ করে, আমরা ডিক্রিমেন্ট অপারেটরের জন্য প্রি এবং পোস্টফিক্স উভয় ফর্মই ব্যবহার করতে পারি৷

  • বিয়োগ - আমরা দুটি পয়েন্টারের পার্থক্য খুঁজে পেতে পারি। সাধারণত, আমরা উপাদানগুলি কতটা আলাদা তা খুঁজে বের করতাম।

  • তুলনা − আমরা দুটি পয়েন্টারের মান তুলনা করতে রিলেশনাল অপারেটর ব্যবহার করব।

উদাহরণ

সি ল্যাঙ্গুয়েজ -

-এ পয়েন্টার অপারেশনের কার্যকারিতা প্রদর্শনের জন্য প্রোগ্রামটি নীচে দেওয়া হল
#include<stdio.h>
main ( ){
   int x,y;
   //Declaring a pointer
   int *p;
   clrscr ( );
   x= 10;
   //Assigning value to a pointer
   p = &x;
   y= *p;
   printf ("Value of x = %d", x);
   printf ("x is stored at address %u", &x);
   printf ("Value of x using pointer = %d", *p);
   printf ("address of x using pointer = %u", p);
   printf (“value of x in y = %d", y);
   *p = 25;
   printf ("now x = %d", x)
   getch ( );
}

আউটপুট

আপনি যখন উপরে উল্লিখিত প্রোগ্রামটি চালান, আপনি নিম্নলিখিত আউটপুট পাবেন -

Value of x = 10
x is stored at address = 5000
Address of x using pointer = 10
Address of x using pointer = 5000
Value of x in y = 10
Now x = 25

  1. সি ভাষায় শিফট অপারেশন কি কি?

  2. সি ভাষায় লুপ কন্ট্রোল স্টেটমেন্ট কি কি? ফ্লো চার্ট ও প্রোগ্রাম দিয়ে ব্যাখ্যা কর

  3. সি ভাষায় বিভিন্ন অনুসন্ধান কৌশল কি কি?

  4. সি ভাষায় অন্তর্নিহিত এবং স্পষ্ট টাইপ রূপান্তর কি?