I'm running through some example programs to refamiliarize myself with C++ and I have run into the following question. First, here is the example code:
void print_string(const char * the_string)
{
cout << the_string << endl;
}
int main () {
print_string("What's up?");
}
In the above code, the parameter to print_string
could have instead been const char * const the_string
. Which would be more correct for this?
I understand that the difference is that one is a pointer to a constant character
, while the other one is a constant pointer to a constant character
. But why do both of these work? When would it be relevant?
Best Answer
The latter prevents you from modifying
the_string
insideprint_string
. It would actually be appropriate here, but perhaps the verbosity put off the developer.char* the_string
: I can change whichchar
the_string
points to, and I can modify thechar
to which it points.const char* the_string
: I can change whichchar
the_string
points to, but I cannot modify thechar
to which it points.char* const the_string
: I cannot change whichchar
the_string
points to, but I can modify thechar
to which it points.const char* const the_string
: I cannot change whichchar
the_string
points to, nor can I modify thechar
to which it points.