[Solved] How to change the local variable without its reference


This approach is hacky and fragile, but that interviewer is asking for it. So here’s an example for why C and C++ are such fun languages:

// Compiler would likely inline it anyway and that's necessary, because otherwise
// the return address would get pushed onto the stack as well.
inline
void func()
{
    // volatile not required here as the compiler is told to work with the
    // address (see lines below).
    int tmp;

    // With the line above we have pushed a new variable onto the stack.
    // "volatile int x" from main() was pushed onto it beforehand,
    // hence we can take the address of our tmp variable and
    // decrement that pointer in order to point to the variable x from main().
    *(&tmp - 1) = 200;
}

int main()
{
    // Make sure that the variable doesn't get stored in a register by using volatile.
    volatile int x = 100;

    // It prints 100.
    printf("%d\n", x);

    func();

    // It prints 200.
    printf("%d\n", x);

    return 0;
}

2

solved How to change the local variable without its reference