পয়েন্টার (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) ব্যবহার করা হয়ে থাকে ।
Add your comment