Різниці немає. Вони обидва оголошують "а" цілим числом, яке неможливо змінити.
Місце, де починають з'являтися відмінності, - це коли ви користуєтеся покажчиками.
І те й інше:
const int *a
int const *a
оголосити "а" вказівником на ціле число, яке не змінюється. "a" можна призначити, але "* a" не може.
int * const a
оголошує "a" постійним вказівником на ціле число. "* 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;
}