পয়েন্টার হল একটি ভেরিয়েবল যা অন্য ভেরিয়েবলের ঠিকানা সংরক্ষণ করে।
পয়েন্টারের জন্য সিনট্যাক্স নিম্নরূপ -
pointer = &variable;
পয়েন্টারের প্রকারগুলি
আটটি বিভিন্ন ধরণের পয়েন্টার রয়েছে যা নিম্নরূপ -
-
নাল পয়েন্টার
-
অকার্যকর পয়েন্টার
-
ওয়াইল্ড পয়েন্টার
-
ঝুলন্ত পয়েন্টার
-
জটিল পয়েন্টার
-
পয়েন্টারের কাছাকাছি
-
দূর নির্দেশক
-
বিশাল পয়েন্টার
নাল পয়েন্টার
আপনি পয়েন্টার ঘোষণার সময় নাল মান নির্ধারণ করে একটি নাল পয়েন্টার তৈরি করেন।
এই পদ্ধতিটি কার্যকর যখন আপনি পয়েন্টারে কোনো ঠিকানা বরাদ্দ করবেন না। একটি নাল পয়েন্টারে সর্বদা মান 0 থাকে।
উদাহরণ
নাল পয়েন্টার -
-এর জন্য C প্রোগ্রামটি নিচে দেওয়া হল#include <stdio.h>
int main(){
int *ptr = NULL; //null pointer
printf("The value inside variable ptr is:\n%d",ptr);
return 0;
} আউটপুট
যখন উপরের প্রোগ্রামটি কার্যকর করা হয়, তখন এটি নিম্নলিখিত ফলাফল তৈরি করে -
The value inside variable ptr is: 0
অকার্যকর পয়েন্টার
এটি এমন একটি পয়েন্টার যার সাথে কোনও সম্পর্কিত ডেটা টাইপ নেই। একটি অকার্যকর পয়েন্টার যেকোন প্রকারের ঠিকানা ধারণ করতে পারে এবং যে কোন প্রকারে টাইপকাস্ট করা যেতে পারে।
এটিকে জেনেরিক পয়েন্টারও বলা হয় এবং এতে কোনো স্ট্যান্ডার্ড ডেটা টাইপ নেই।
এটি কীওয়ার্ড void ব্যবহার করে তৈরি করা হয়েছে।
উদাহরণ
শূন্য পয়েন্টার -
-এর জন্য C প্রোগ্রামটি নিচে দেওয়া হল#include <stdio.h>
int main(){
void *p = NULL; //void pointer
printf("The size of pointer is:%d\n",sizeof(p)); //size of p depends on compiler
return 0;
} এর উপর নির্ভর করে আউটপুট
যখন উপরের প্রোগ্রামটি কার্যকর করা হয়, তখন এটি নিম্নলিখিত ফলাফল তৈরি করে -
The size of pointer is:8
ওয়াইল্ড পয়েন্টার
ওয়াইল্ড পয়েন্টারকে অপ্রচলিত পয়েন্টারও বলা হয়। কারণ তারা কিছু নির্বিচারে মেমরি অবস্থান নির্দেশ করে এবং একটি প্রোগ্রাম ক্র্যাশ বা খারাপ আচরণ করতে পারে।
এই ধরনের সি পয়েন্টার দক্ষ নয়। কারণ তারা কিছু অজানা মেমরি অবস্থান নির্দেশ করতে পারে যা আমাদের প্রোগ্রামে সমস্যা সৃষ্টি করতে পারে। এর ফলে প্রোগ্রাম ক্র্যাশ হয়ে যেতে পারে।
ওয়াইল্ড পয়েন্টারগুলির সাথে কাজ করার সময় সতর্ক থাকার পরামর্শ দেওয়া হয়৷
উদাহরণ
ওয়াইল্ড পয়েন্টার -
এর জন্য সি প্রোগ্রামটি নিচে দেওয়া হল#include <stdio.h>
int main(){
int *p; //wild pointer
printf("\n%d",*p);
return 0;
}
Process returned -1073741819 (0xC0000005) execution time : 1.206 s
Press any key to continue
i.e. you won’t get output, some compilers show error message at output