কম্পিউটার টিউটোরিয়াল

C-তে const int*, const int* const, এবং int const* এর পার্থক্য

পয়েন্টার (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, তাই না পয়েন্টার না ভ্যালু পরিবর্তন করা যায়।

  1. C++-এ const int*, const int* const, int const* পার্থক্য

  2. C# এবং Visual C#-র পার্থক্য

  3. C# এবং .NET-এর পার্থক্য

  4. Go এবং Java-এর পার্থক্য