আসসালামু আলাইকুম। অনেক দিন পর আপনাদের কথা মনে পড়ল। এত দিন পুরাপুরিভাবেই ভুলে ছিলাম। আসলে কথা কিন্তু তা নয় আপনাদের প্রতি দিনই মিস করেছি। আর প্রতি দিনই ক্লান্ত পরিস্রান্ত মন নিয়ে আপনাদের কথা ভেবে ভেবেই ঘুমিয়ে পরেছি। সত্যি বলছি লিখতে গিয়েও লেখা হয়নি। কিন্তু আজ আমি নিজের মধ্যে একটা অন্যরকম অভাব প্রত্যক্ষ করছি আর তা হল আমার লেখা আর আগের মত হচ্ছে না। অনেক দিন না লেখার কারণে ভাষাগত ত্রুটি লক্ষ্য করা যাচ্ছে যা আপনরা নিজগুণে ক্ষমা করে দিবেন।
আজ চলুন সি নিয়ে একটু ভাবা যাক। সি প্রোগ্রামিং এর একটা মোটামোটি বড়সড় জায়গা দখল আছে pointer. এর সব থেকে বড় কাজের কথা হল আমরা এর সাহায্যে সরাসরি প্রসেসরকে এক্সেস করতে পারি। আমরা এর আগে array নিয়ে কাজ করেছিলাম। এখন pointer এর কাজও একই রকম। কিন্তু সামান্য পার্থক্য রয়েছে থাকতেই পারে যদি কোন পার্থক্যই না থাকবে তাহলে আলাদা করে দুটোকে আলোচোনা করার কোন মানে হয়না।
আমরা এখন প্রথমে কিভাবে pointer ডিক্লার করতে হয় তা দেখব।
<variable_type> *<name>; অর্থাৎ আমরা নিচের মত করে pointer ডিক্লার করতে পারি।
int *points_to_integer;
/* one pointer, one regular int */ int *pointer1, nonpointer1; /* two pointers */ int *pointer1, *pointer2; আমরা নিচের উদাহরণ দেখলে আর তা নিজেদের মেশিনে কম্পাইল করে দেখলে আরও সহজে বুঝে নিতে পারব।
#include <stdio.h> int main() { int a; /* A normal integer*/ int *b; /* A pointer to an integer ("*b" is an integer, so b must be a pointer to an integer) */ b = &a; /* Read it, "assign the address of a to b" */ scanf( "%d", &a ); /* Put a value in a, we could also use b here */ printf( "%d\n", *b ); /* Note the use of the * to get the value */ getchar(); } এই উদাহরণে মূলত দুটো পূর্ন সংখ্যা নেওয়া হয়েছে যার একটি'b' হল pointer. আর 'a' এর মেমোরি অ্যাড্রেস 'b' তে অ্যাসাইন করা হয়েছে। তারপর ইউজার থেকে ইনপুট নেওয়া হল। এখন আমরা এই প্রোগ্রামকে রান করালে আমরা দেখব আমরা ইনপুট নিলাম a এর জন্য কিন্তু আমাদের b এর আউটপুট হচ্ছে a এর জন্য নেওয়া মান। সুতরাং আমরা বুঝতে পারছি কিভাবে আমাদের a এর জন্য রাখা মান b এর জন্য অ্যাাসাইন হয়।
আমাকে এখন থেকে আপনারা এই ব্লগে খুঁজে পাবেন। সরাসরি ব্লগে যেতে ক্লিক করুন।