I believe the distinction they’re making is that there is actually no guarantee that the value pointed to by x will remain constant. All this tells you is that you’re not allowed to use x to make the modification.
Restrict keyword does do that if you wish to say that to the compiler. It tells it that no parameters point to the same memory. So if you won't change things via x, *x won't change.
If you want “x is a read-only pointer to an int”, you would need
The article also doesn’t mention the case “x is a read-only pointer to a constant int”. To state that, you would use (https://stackoverflow.com/a/1143272)