ভ্যারিয়েবল কী তা নিয়ে তো এখন তোমাদের পরিষ্কার ধারণা আছে, তাই না? আমরা বিভিন্ন ডেটা টাইপের ভ্যারিয়েবলে বিভিন্ন ধরনের ডেটা রাখতে পারি । যেমন সংখ্যা, চিহ্ন, দশমিক সংখ্যা ইত্যাদি তাই না? তেমনি একটা ভ্যারিয়েবলের ডেটা টাইপ আছে যা কেবল মাত্র মেমোরি অ্যাড্রেস রাখতে পারে । এই ভ্যারিয়েবল গুলোই হলো পয়েন্টার । মানে পয়েন্টার মূলত একটি ভ্যারিয়েবল যা সংখ্যা চিহ্ন ইত্যাদি ধারণ করে না বরং মেমোরি অ্যাড্রেস ধারণ করে ।
সিতে পয়েন্টারের ডেটা টাইপ টা অন্য ডেটা টাইপ থেকে একটু আলাদা । আমরা পয়েন্টারের ভেতরে যে ডেটা টাইপের ভ্যারিয়েবল রাখতে চাই সেই ডেটা টাইপের পরে * দিলে পয়েন্টারের ডেটা টাইপ পাওয়া যায় । যেমন ধরোঃ আমার কাছে একটা টাইপের ভ্যারিয়েবল আছে । এখন আমি চাচ্ছি এর অ্যাড্রেস টা কে নামের একটি পয়েন্টারে রাখবো । তখন এর ডেটা টাইপ হবে । তেমনি, টাইপের ভ্যারিয়েবলের অ্যাড্রেস রাখতে পয়েন্টার তৈরি করলে তার ডেটা টাইপ হবে এরকম ।
চলো উদাহরণের মাধ্যমে জিনিসটা দেখে নেইঃ
1#include<stdio.h>
2
3int main(){
4 int myInteger = 5;
5 int* myPointer = &myInteger;
6 printf("Value of myInteger: %d", myInteger);
7 printf("\n");
8 printf("Value of myPointer: %p", myPointer);
9 printf("\n");
10 printf("Address of myInteger: %p", &myInteger);
11 return 0;
12}
13Value of myInteger: 5
Value of myPointer: 000000000061FE14
Address of myInteger: 000000000061FE14এখানে, এর ভ্যালু আর এর অ্যাড্রেস একই আসবে । এ থেকে বোঝা গেলো, এর অ্যাড্রেস কে এ রাখা হয়েছে ।
লক্ষ্য করো, এখানে ৮ নাম্বার লাইনে কিন্তু আমরা এর আগে & ব্যবহার করি নি । কারণ, এর আগে & ব্যবহার করলে আমরা যেই অ্যাড্রেস পাবো সেটা হবে এর অ্যাড্রেস, এর নয় !
