What's the author's justification? What's your justification?
> They all read correctly now, when read right-to-left.
... suppose I'm someone who reads from left-to-right, should I flip the order to make it correct for me?
> They all read correctly now, when read right-to-left.
... suppose I'm someone who reads from left-to-right, should I flip the order to make it correct for me?
I’m neither of them, but chances are that’s because you can’t make them left-to-right all the time.
double const *foo; // foo is a pointer to a const double
double *const foo; // foo is a const pointer to a double
compile and do what the comment says; these do not compile: * const double foo; // a pointer to a const double named “foo”
foo * const double; // foo is a pointer to a const double const char *const ptr;
The first const applies to the char, but the second one to the pointer itself. Being consistent: char const *const ptr;
The first const applies to the item to its left---char. The second const applies to the item to its left---the pointer. To recap: char *ptr1; // modifiable pointer to modifiable data
char const *ptr2; // modifiable pointer to const data
char *const ptr3; // const pointer to modifiable data
char const *const ptr4; // const pointer to const dataC declarations can become unfriendly by being too complex and disordered.