In C, a const pointer to char is used to modify a string buffer. What gets printed after changing the first character? #include <stdio.h> int main() { char str[20] = "Hello"; char const p = str; / const pointer, modifiable characters */ *p = 'M'; printf("%s ", str); return 0; }

Difficulty: Easy

Correct Answer: Mello

Explanation:


Introduction / Context:
This question differentiates between a const pointer to char and a pointer to const char. The declaration char *const p means the pointer value itself is constant (cannot point elsewhere), but the characters it points to remain modifiable.


Given Data / Assumptions:

  • str is a writable character array containing "Hello".
  • p is a const pointer to the first element of str.
  • *p = 'M' overwrites the first character of str.


Concept / Approach:
Because the data is in an array (not a string literal in read-only memory), writing *p = 'M' replaces 'H' with 'M'. The rest of the array is unchanged. Printing str therefore shows the modified word.


Step-by-Step Solution:
Start with "Hello" → indices: 0:H 1:e 2:l 3:l 4:o.Apply *p = 'M' → index 0 becomes 'M'.Array now spells "Mello".printf prints the entire string → "Mello".


Verification / Alternative check:
Had the pointer been declared as const char *p, then writing *p = 'M' would be illegal. Here, only the pointer is const, not the data.


Why Other Options Are Wrong:
"Hello" ignores the assignment. "HMello" or "MHello" would require insertions or different pointer manipulations not present in the code.


Common Pitfalls:
Confusing char *const with const char * and assuming data immutability. Also, trying this with a string literal (e.g., char *p = "Hello";) would cause undefined behavior.


Final Answer:
Mello

More Questions from Pointers

Discussion & Comments

No comments yet. Be the first to comment!
Join Discussion