সি পয়েন্টারস

পয়েন্টার কী?

ভ্যারিয়েবল কী তা নিয়ে তো এখন তোমাদের পরিষ্কার ধারণা আছে, তাই না? আমরা বিভিন্ন ডেটা টাইপের ভ্যারিয়েবলে বিভিন্ন ধরনের ডেটা রাখতে পারি । যেমন সংখ্যা, চিহ্ন, দশমিক সংখ্যা ইত্যাদি তাই না? তেমনি একটা ভ্যারিয়েবলের ডেটা টাইপ আছে যা কেবল মাত্র মেমোরি অ্যাড্রেস রাখতে পারে । এই ভ্যারিয়েবল গুলোই হলো পয়েন্টার । মানে পয়েন্টার মূলত একটি ভ্যারিয়েবল যা সংখ্যা চিহ্ন ইত্যাদি ধারণ করে না বরং মেমোরি অ্যাড্রেস ধারণ করে । 

সি তে পয়েন্টার তৈরি করা 

সিতে পয়েন্টারের ডেটা টাইপ টা অন্য ডেটা টাইপ থেকে একটু আলাদা । আমরা পয়েন্টারের ভেতরে যে ডেটা টাইপের ভ্যারিয়েবল রাখতে চাই সেই ডেটা টাইপের পরে * দিলে পয়েন্টারের ডেটা টাইপ পাওয়া যায় । যেমন ধরোঃ আমার কাছে একটা টাইপের ভ্যারিয়েবল আছে । এখন আমি চাচ্ছি এর অ্যাড্রেস টা কে নামের একটি পয়েন্টারে রাখবো । তখন এর ডেটা টাইপ হবে । তেমনি, টাইপের ভ্যারিয়েবলের অ্যাড্রেস রাখতে পয়েন্টার তৈরি করলে তার ডেটা টাইপ হবে এরকম । 

চলো উদাহরণের মাধ্যমে জিনিসটা দেখে নেইঃ 

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}
13
Value of myInteger: 5
Value of myPointer: 000000000061FE14
Address of myInteger: 000000000061FE14

এখানে, এর ভ্যালু আর এর অ্যাড্রেস একই আসবে । এ থেকে বোঝা গেলো, এর অ্যাড্রেস কে এ রাখা হয়েছে । 

লক্ষ্য করো, এখানে ৮ নাম্বার লাইনে কিন্তু আমরা এর আগে & ব্যবহার করি নি । কারণ, এর আগে & ব্যবহার করলে আমরা যেই অ্যাড্রেস পাবো সেটা হবে এর অ্যাড্রেস, এর নয় !

Logo

PyxLearn

Quick Links

আমাদের মেসেজ পাঠাতে চাও?