Il n'y a pas de différence. Ils déclarent "a" à être un entier qui ne peut pas être modifié.
Le lieu où les différences commencent à apparaître lorsque vous utilisez les pointeurs.
Deux de ces:
const int *a
int const *a
déclarer "a" à être un pointeur vers un entier qui ne change pas. "a" peut être attribué, mais "*" impossible.
int * const a
déclare "une" à une constante pointeur vers un entier. "*"peut être attribué à l', mais "un" ne peut pas.
const int * const a
déclare "un" un pointeur constant sur une constante de type entier. Ni "un", ni "*" peut être attribué.
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;
}