On the other hand, when skimming some code, does it matter on the first pass whether a given variable is mutable? Probably not if we're just trying to get an idea of how it works; later on a closer read we can look closer if it matters.
If a variable is const-declared, I react in exactly the same way and know that I don't have to look for further uses, which I find very valuable.
I even do stuff like this, which might be extreme but I find it coherent and nice:
void * allocate_and_fill(size_t size, unsigned char x)
{
void * const p = malloc(size);
if (p != NULL)
memset(p, x, size);
return p;
}
The above const-declares the local pointer p, so that it can never be intentionally clobbered inside the function, which would leak the memory. Since it's the pointer itself that is constant, not the data being pointed at, there is no problem in modifying that memory, and the return value is not const-declared in any way.