in the code
const char* buf
what is the constant? The pointer or buf?
The character(s) pointed to by
buf are treated as read-only. To make the pointer itself
const, place the keyword after the asterisk:
char * const buf; // const pointer to non-const char const char *buf; // Non-const pointer to const char const char * const buf; // const pointer to const char
But now I'm confused about the placement of the asterisk.
const char* buf mean the same thing as
const char *buf or
const char * buf?
For the most part, whitespace in C is ignored. All three of your examples are functionally identical. You could also say
const char*buf and it'll work fine because the tokens aren't ambiguous. However,
constchar won't work.
Another bit of trivia is that
const doesn't have to go before the type:
char const *buf. This can make declarations easier to decipher as they're typically read inside out and right to left:
char const * const buf reads as "buf is a const pointer to const char".
Thank you again. A lot of code has just gotten a lot less confusing.
Good luck Kent! :-) Sometimes this stuff gets my eyeballs rolling, and I've been doing it for 30+ years! Deceptikon's answer was to the point. Couldn't state it better myself.