Question: I really can't understand what is the difference here 

```
const int a = 1;
int const a = 1;

```

I know what constants are but the example above confuse me.

Answer: 
In this particular instance they are identical. 

But, I think it's worth pointing out that the ordering *does* matter when it comes to pointers:

```
const int * a;       // pointer to constant int
int const * a;       // pointer to constant int
int * const a;       // constant pointer to int
int const * const a; // constant pointer to constant int

```
As others have said, your two code examples are the same.

An easy way to remember how to parse these kinds of expressions is:

* If the `const` appears next to (on either side) a *typename*, as in your example, the `const` binds to the type name.
* Otherwise, the `const` binds to the first pointer to the left of it.

So for example, `int * const p` is a constant pointer to a non-constant `int`, meaning that you can write to the `int` using `p`, but cannot change the value of `p`.

One way of remembering whether a `const` which is not next to a typename binds to the pointer on its left or right side is to consider the fact that expressions of the type `int * const p` are legal, and so the `const` in this expression has to bind to the pointer on the left. You do still need to remember that `const` prefers typenames to pointers.