Programming article

পয়েন্টার (Pointer) নিয়ে যত কথা।.

পয়েন্টার (Pointer) নিয়ে যত কথা।. 

আমরা যখন C প্রোগ্রামিং-এ একটি variable declare করি তখন ঐ variable  টি আমদের কম্পিউটার এ একটি স্থান/ মেমোরি আমাদের জন্য বরাদ্দ রাখে যার ভিতর আমরা আমাদের ডাটা সেভ রাখতে পারি। যেমন-

  int a;    →   এখানে integer type ডাটা আর জন্য আমরা   একটি    স্থান/ মেমোরি তৈর করি । আমরা এই  স্থান/ মেমোরি এর ভিতর এখান একটি integer type ডাটা রাখতে পারব । কিন্তু আমরা কখন ঐ জানব না যে আমাদের   এই ডাটা টি আসলে কম্পিউটার আর কোথায় সেভ থাকছে ।

এখন যদি আমরা জানতে চাই যে আমাদের ডাটা টি ঠিক কোথায় সেভ তখন আমরা সুধু  &a দিয়ে দেখতে পারি।

 Like  →   printf(“%d”,&a);
আমরা এটি প্রিন্ট দিলে দেখতে পারব যে আমাদের   ডাটা টি কম্পিউটার আর কোথায় সেভ আছে । কিন্তু আমরা ঐ এড্রেস আর উপর কোন access পাব না ।
অর্থাৎ আমরা ঐ  address  আর ডাটা তে কোন পরিবর্তন আনতে পারব না । আর কোন address আর ডাটা তে access করার জন্য আমাদের পয়েন্টার(Pointer) ব্যবহার করতে হবে ।

পয়েন্টার(Pointer) হচ্ছে এমন একটি variable যার ভিতর এ আমরা কোন variable এর address সেভ রাখতে পারব । Pointer কে declare  করা হয় এই ভাবে-

    int *ptr ;   →  এখানে একটি  Integer Type Pointer declare করা  হল,যার ভিতর আমরা একটি integer address সেভ রাখতে পারব ।          এখানে int দিয়ে বুঝানো হচ্ছে যে Pointer টি কী type,  “*” দিয়ে বুঝানো হয় এটি একটি Pointer type variable এবং “ptr” হচ্ছে variable      এর নাম ।


Address Save:
For Integer:
     int n;
     int *ptr;
     n=5; /// n integer এ value 5 assign করলাম
     ptr = &n; /// ptr এর ভিতর এখন n variable এর address save করলাম

Print:

printf(“%d”,*ptr);   // সব সময় * দিয়ে Pointer এর নাম লিখে প্রিন্ট দিতে হয়  integer এর সময়

Output:   5

For Character:
          char c;
          char *ptr /// character type pointer
           c= ‘a’; /// c char এর ভিতর alphabet এ save রাখলাম
           ptr=&c; /// ptr এর ভিতর এখন c variable এর address save করলাম

Print: 

printf(“%c”,*ptr);   // সব সময় * দিয়ে Pointer এর নাম লিখে প্রিন্ট দিতে হয়  charecter এর সময়

Output:   a

For Array:

Array এর address save রাখার সময় শুধু আমরা 1st index এর address টি সেভ করলাই আমরা index এর মান পরিবর্তন করে পুরো Array টি Travers করতে পাড়বো ।

        int Array[5]={0,1,2,3,4};

        int *ptr;

        ptr=array;   ///array এর 1st index টি save করলাম এখানে “&” ব্যবহার করার দরকার হয় না ।
Print: 
int i;

 for(i=0; i<size; i++)
 {
   printf(“%d “,*(ptr+i)); /// index এর value change করে প্রিন্ট করা হয় এভাবে
 }
     
For String:
   Array এর মত String এও 1st index সেভ রাখাতে হয় ।
   char str[100]= {“Code to HaveN”};
   char *ptr;
   ptr  = str; ///save 1st  position of the string

Print: 
int i=0;
while(*(ptr+i)!=’ 0’)
{
     printf(“%c”,*(ptr+i));  ///index পরিবর্তন করে NULL না হওা পর্যন্ত প্রিন্ট
      i++;
}

কেন আমরা পয়েন্টার(Pointer) ব্যবহার করিঃ

আমরা যদি অনেক use  করি একটি variable ,তখন ঐ variable এ থাকা ডাটা টি নষ্ট হবার chance থাকে । এই সমস্যা এর সম্মুখীন না হওয়ার জন্য প্রধানত  পয়েন্টার(Pointer) ব্যবহার করা হয়ে থাকে ।

Join the discussion

Add your comment