Tidak ada perbedaan. Keduanya menyatakan "a" sebagai bilangan bulat yang tidak dapat diubah.
Tempat di mana perbedaan mulai muncul adalah saat Anda menggunakan petunjuk.
Keduanya:
const int *a
int const *a
mendeklarasikan "a" sebagai penunjuk ke integer yang tidak berubah. "a" bisa ditetapkan ke, tapi "* a" tidak bisa.
int * const a
menyatakan "a" sebagai penunjuk konstan ke integer. "* a" bisa ditetapkan ke, tapi "a" tidak bisa.
const int * const a
menyatakan "a" sebagai penunjuk konstan ke bilangan bulat konstan. Baik "a" maupun "* a" tidak dapat ditetapkan ke.
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;
}