Created
January 28, 2014 13:46
-
-
Save burczyk/8667937 to your computer and use it in GitHub Desktop.
const int VS int const
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
The trick is to read the declaration backwards (right-to-left): | |
const int a = 1; // read as "a is an integer which is constant" | |
int const a = 1; // read as "a is a constant integer" | |
Both are the same thing. Therefore: | |
a = 2; // Can't do because a is constant | |
The reading backwards trick especially comes in handy when you're dealing with more complex declarations such as: | |
const char *s; // read as "s is a pointer to a char that is constant" | |
char c; | |
char *const t = &c; // read as "t is a constant pointer to a char" | |
*s = 'A'; // Can't do because the char is constant | |
s++; // Can do because the pointer isn't constant | |
*t = 'A'; // Can do because the char isn't constant | |
t++; // Can't do because the pointer is constant |
This is great! Reading it backwards makes it very simple
Noob question: can I do: const char *const s
?
This is great! Reading it backwards makes it very simple
Noob question: can I do:
const char *const s
?
Yes you can, in that case you can't do s++
as your pointer is also a constant.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks for the quick explanation.