পয়েন্টার (Pointer)
C প্রোগ্রামিং ল্যাঙ্গুয়েজে, *p পয়েন্টারে সংরক্ষিত মানকে প্রতীকী করে এবং p মানটির অ্যাড্রেসকে, যাকে পয়েন্টার বলা হয়।
const int* এবং int const* বোঝায় যে পয়েন্টারটি একটি কনস্ট্যান্ট int-কে পয়েন্ট করতে পারে এবং এই পয়েন্টার দ্বারা পয়েন্ট করা int-এর মান পরিবর্তন করা যাবে না। কিন্তু পয়েন্টারের মান পরিবর্তন করা যাবে কারণ এটি কনস্ট্যান্ট নয় এবং এটি অন্য একটি কনস্ট্যান্ট int-কে পয়েন্ট করতে পারে।
const int* const বোঝায় যে পয়েন্টারটি একটি কনস্ট্যান্ট int-কে পয়েন্ট করতে পারে এবং এই পয়েন্টার দ্বারা পয়েন্ট করা int-এর মান পরিবর্তন করা যাবে না। এবং পয়েন্টারের মানও পরিবর্তন করা যাবে না কারণ এখন এটি কনস্ট্যান্ট এবং এটি অন্য কোনো কনস্ট্যান্ট int-কে পয়েন্ট করতে পারবে না।
থাম্ব রুল (Thumb Rule): নেমিং সিনট্যাক্স ডান থেকে বাম পড়তে হয়।
// কনস্ট্যান্ট পয়েন্টার টু কনস্ট্যান্ট int const int * const // পয়েন্টার টু কনস্ট্যান্ট int const int *
উদাহরণ (C প্রোগ্রাম)
কমেন্ট করা এররনাস কোডগুলো আনকমেন্ট করুন এবং এরর দেখুন।
#include <stdio.h>
int main() {
// Example: int const*
// Note: int const* is same as const int*
const int p = 5;
// q is a pointer to const int
int const* q = &p;
// Invalid assignment
// value of p cannot be changed
// error: assignment of read-only location '*q'
// *q = 7;
const int r = 7;
// q can point to another const int
q = &r;
printf("%d", *q);
// Example: int const* const
int const* const s = &p;
// Invalid assignment
// value of s cannot be changed
// error: assignment of read-only location '*s'
// *s = 7;
// Invalid assignment
// s cannot be changed
// error: assignment of read-only variable 's'
// s = &r;
return 0;
}
আউটপুট
7
ব্যাখ্যা: q হল পয়েন্টার টু কনস্ট্যান্ট int, তাই এটি অন্য কনস্ট্যান্ট int (r)-কে পয়েন্ট করতে পারে কিন্তু মান পরিবর্তন করতে পারে না। s হল কনস্ট্যান্ট পয়েন্টার টু কনস্ট্যান্ট int, তাই না পয়েন্টার না ভ্যালু পরিবর্তন করা যায়।