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 your case these statements are synonymous. Modifiers in C apply to the left specifier unless there is none. This makes more sense when you have pointers.

```
int const a;

```

defines a constant variable `a`.

```
int const * a;

```

defines a modifiable pointer to a const variable.

```
int * const a;

```

defines a const pointer to a modifiable variable.
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.