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