কম্পিউটার

C-তে const char* p, char * const p, এবং const char * const p-এর মধ্যে পার্থক্য


পয়েন্টার

সি প্রোগ্রামিং ভাষায়, *p একটি পয়েন্টারে সংরক্ষিত মানকে প্রতিনিধিত্ব করে এবং p একটি মানের ঠিকানাকে প্রতিনিধিত্ব করে, একটি পয়েন্টার হিসাবে উল্লেখ করা হয়৷

const char* এবং char const* বলে যে পয়েন্টার একটি ধ্রুবক অক্ষর নির্দেশ করতে পারে এবং এই পয়েন্টার দ্বারা নির্দেশিত char এর মান পরিবর্তন করা যাবে না। কিন্তু আমরা পয়েন্টারের মান পরিবর্তন করতে পারি কারণ এটি ধ্রুবক নয় এবং এটি অন্য একটি ধ্রুবক চারের দিকে নির্দেশ করতে পারে।

char* const বলে যে পয়েন্টার একটি চর নির্দেশ করতে পারে এবং এই পয়েন্টার দ্বারা নির্দেশিত char এর মান পরিবর্তন করা যেতে পারে। কিন্তু আমরা পয়েন্টারের মান পরিবর্তন করতে পারি না কারণ এটি এখন ধ্রুবক এবং এটি অন্য চরকে নির্দেশ করতে পারে না।

const char* const বলে যে পয়েন্টার একটি ধ্রুবক চর নির্দেশ করতে পারে এবং এই পয়েন্টার দ্বারা নির্দেশিত int এর মান পরিবর্তন করা যাবে না। এবং আমরা পয়েন্টারের মান পরিবর্তন করতে পারি না যেমন এটি এখন ধ্রুবক এবং এটি অন্য ধ্রুবক চারের দিকে নির্দেশ করতে পারে না৷

থাম্ব রুল হল সিনট্যাক্সকে ডান থেকে বামে নামকরণ করা।

// constant pointer to constant char
const char * const
// constant pointer to char
char * const
// pointer to constant 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 asssignment
   // 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 asssignment
   // t cannot be changed
   // error: assignment of read-only variable 't'
   //t = &r;
   //Example: char const* const
   char const* const s = &p;
   // Invalid asssignment
   // value of s cannot be changed
   // error: assignment of read-only location '*s'
   // *s = 'D';
   // Invalid asssignment
   // s cannot be changed
   // error: assignment of read-only variable 's'
   // s = &r;
   return 0;
}

আউটপুট

C
E

  1. C# এ শুধুমাত্র পঠনযোগ্য এবং const কীওয়ার্ডের মধ্যে পার্থক্য

  2. C# এবং ভিজ্যুয়াল C# এর মধ্যে পার্থক্য

  3. C# এবং .Net এর মধ্যে পার্থক্য

  4. Go এবং Java এর মধ্যে পার্থক্য।