It absolutely does return a memory address; it even has the type of a memory address ("int *"). You just can't write to it because it doesn't live in a writable location (an lvalue), for the same reason you can't write:
(x + 1) = 12
because (x+1) doesn't live in a writable location.
Comments
It absolutely does return a memory address; it even has the type of a memory address ("int *"). You just can't write to it because it doesn't live in a writable location (an lvalue), for the same reason you can't write:
because (x+1) doesn't live in a writable location.