Difficulty: Easy
Correct Answer: Error: fun() returns a pointer const character which cannot be modified
Explanation:
Introduction / Context:
This question checks whether you can write through a pointer to const data returned by a function. The code dereferences the returned pointer and assigns a character, attempting to mutate a string literal.
Given Data / Assumptions:
Concept / Approach:
A string literal has static storage and is non-modifiable. Returning a const char correctly advertises immutability. Dereferencing that pointer as an lvalue target of assignment violates const and, if forced, would lead to undefined behavior.
Step-by-Step Solution:
fun() → const char * to "Hello".*fun() is a const-qualified char lvalue.Assigning 'A' attempts to modify read-only memory → compile-time error in strictly conforming compilers.
Verification / Alternative check:
Change fun to return char * but still return a literal: some compilers allow compilation but crash at runtime. Correct approach: copy into a writable array first.
Why Other Options Are Wrong:
“Rvalue/Lvalue required” do not precisely address const immutability. “No error” is wrong in standard-conforming code; writing to a literal is invalid.
Common Pitfalls:
Forgetting const on function returns; writing into string literals; assuming dereferencing a pointer always yields a modifiable lvalue.
Final Answer:
Error: fun() returns a pointer const character which cannot be modified
Discussion & Comments