এখানে কোন পার্থক্য নেই. তারা উভয়ই "একটি" পূর্ণসংখ্যা হিসাবে ঘোষণা করে যা পরিবর্তন করা যায় না।
আপনি পয়েন্টার ব্যবহার করার সময় জায়গাটি যেখানে পার্থক্য দেখা শুরু হয়।
দুটোই:
const int *a
int const *a
পরিবর্তিত হয় না এমন একটি পূর্ণসংখ্যার পয়েন্টার হিসাবে "একটি" ঘোষণা করুন। "a" কে বরাদ্দ করা যেতে পারে, তবে "* a" দিতে পারে না।
int * const a
একটি পূর্ণসংখ্যার একটি ধ্রুবক পয়েন্টার হিসাবে "ক" ঘোষণা করে। "* a" কে বরাদ্দ করা যেতে পারে, তবে "এ" পারবেন না।
const int * const a
"a" কে ধ্রুবক পূর্ণসংখ্যার জন্য একটি ধ্রুবক পয়েন্টার হিসাবে ঘোষণা করে। "A" বা "* a" কেও বরাদ্দ করা যাবে না।
static int one = 1;
int testfunc3 (const int *a)
{
*a = 1; /* Error */
a = &one;
return *a;
}
int testfunc4 (int * const a)
{
*a = 1;
a = &one; /* Error */
return *a;
}
int testfunc5 (const int * const a)
{
*a = 1; /* Error */
a = &one; /* Error */
return *a;
}