Fark yok. Her ikisi de "a" nın değiştirilemeyen bir tamsayı olduğunu beyan eder.
Farklılıkların ortaya çıkmaya başladığı yer, işaretçiler kullandığınız zamandır.
Bunların ikisi de:
const int *a
int const *a
"a" nın değişmeyen bir tamsayıya işaretçi olduğunu beyan edin. "a" atanabilir ancak "* a" atanamaz.
int * const a
"a" nın bir tamsayıya sabit bir gösterici olduğunu bildirir. "* a" atanabilir ancak "a" atanamaz.
const int * const a
"a" nın sabit bir tam sayıya sabit bir gösterici olduğunu bildirir. Ne "a" ne de "* a" atanamaz.
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;
}