If you take the following function call:
Value = GetVal("Please enter a value in the range 1 to 5: ");
then the definition:
int GetVal(const char *const Msg)
When you are passing a string literal as shown in the function call, does the preprocessor allocate memory for this string so the local pointer of the function will hold the address of the string of the first element of the string?