The comment about changing the const pointers is subtly wrong. There are pointers to const memory and there are const pointers to memory. My favourite little known C fact. See also http://stackoverflow.com/questions/1143262/
const char* s = ...;
while (*s++) { ... } void something(const char* const s);
Maybe I'm extrapolating here, but it surprised me.