সি প্রোগ্রামিং ভাষায়, একটি ভেরিয়েবলের অ্যাড্রেস ধারণ করা এবং সেই অ্যাড্রেসের মান অ্যাক্সেস করার জন্য দুটি বিশেষ অপারেটর ব্যবহার করা হয়: & (এমপার্স্যান্ড) এবং * (স্টার বা ডিরেফারেন্সিং অপারেটর)।
& অপারেটর
& অপারেটর একটি ভেরিয়েবলের মেমোরি অ্যাড্রেস প্রদান করে। এটি কোনো ভেরিয়েবলের সামনে ব্যবহার করলে সেই ভেরিয়েবলের মেমোরি লোকেশন বা ঠিকানা রিটার্ন করে।
উদাহরণ
#include <stdio.h>
int main() {
int num = 10;
printf("Address of num: %p\n", &num); // & অপারেটরের মাধ্যমে num এর ঠিকানা পাওয়া
return 0;
}
আউটপুট:
Address of num: 0x7ffee3b0d0ac (এটি মেমোরি ঠিকানা হতে পারে, ভিন্নও হতে পারে)
এখানে &num ব্যবহার করার মাধ্যমে num ভেরিয়েবলের মেমোরি ঠিকানা প্রিন্ট করা হয়েছে।
* অপারেটর (ডিরেফারেন্সিং অপারেটর)
* অপারেটর একটি পয়েন্টারের মাধ্যমে মেমোরি লোকেশনে থাকা মান অ্যাক্সেস করতে ব্যবহার করা হয়। যখন কোনো পয়েন্টারে * অপারেটর প্রয়োগ করা হয়, তখন সেটি সেই পয়েন্টারের ঠিকানায় থাকা ডেটা রিটার্ন করে। এ কারণে * অপারেটরকে ডিরেফারেন্সিং অপারেটর বলা হয়।
উদাহরণ
#include <stdio.h>
int main() {
int num = 10;
int *ptr = # // num এর ঠিকানা ptr এ সংরক্ষণ করা হচ্ছে
printf("Value of num: %d\n", num);
printf("Address of num: %p\n", &num);
printf("Value stored in ptr (address of num): %p\n", ptr);
printf("Value pointed by ptr: %d\n", *ptr); // * অপারেটরের মাধ্যমে num এর মানে প্রবেশ
return 0;
}
আউটপুট:
Value of num: 10
Address of num: 0x7ffee3b0d0ac
Value stored in ptr (address of num): 0x7ffee3b0d0ac
Value pointed by ptr: 10
বিবরণ:
ptrএকটি পয়েন্টার, যাnumএর মেমোরি ঠিকানা ধারণ করে।*ptrব্যবহার করে আমরাptrদ্বারা নির্দেশিত মেমোরি ঠিকানার মান অ্যাক্সেস করতে পারি, অর্থাৎnumএর মান10।
& এবং * অপারেটরের সম্পর্ক
&অপারেটর কোনো ভেরিয়েবলের ঠিকানা ধারণ করে।*অপারেটর সেই ঠিকানায় থাকা আসল মানটি বের করতে সাহায্য করে।
উদাহরণ:
int num = 10;
int *ptr = #
printf("%d\n", *(&num)); // num এর ঠিকানা থেকে আবার num এর মান বের করা
আউটপুট:
Copy code
10
এখানে, *(&num) ব্যবহার করে আমরা num এর মান সরাসরি অ্যাক্সেস করতে পারছি। &num এর মাধ্যমে num এর মেমোরি ঠিকানা পাওয়া যায় এবং * অপারেটরের মাধ্যমে সেই ঠিকানায় থাকা মান অ্যাক্সেস করা যায়।
সংক্ষেপে:
&অপারেটর: একটি ভেরিয়েবলের ঠিকানা রিটার্ন করে।*অপারেটর: পয়েন্টার দ্বারা নির্দেশিত ঠিকানার মানে প্রবেশ করতে ব্যবহৃত হয়।
সুতরাং, পয়েন্টারের মাধ্যমে ভেরিয়েবলের মেমোরি ঠিকানার মান অ্যাক্সেস এবং ম্যানিপুলেশন করতে & এবং * অপারেটর ব্যবহার করা হয়।
Read more