When pass a varible to a function, why the function only gets a duplicate of the varible?
===

When pass a varible to a function, why the function only gets a copy/duplicate of the varible?

    int n=1;

    void foo(int i)
    {
    	i++;
    }
As we all know, the function foo() can't change the value of `n` by using foo(n).
  
Of course we can pass the address of the variable to make some change to the parameter variable.  
But don't you think that is a little bit inconvenient?  
  
Why c/c++ is designed to only give a duplicate to the function instead of directly give the "real" variable itself to the function?  
What't the pro/benefit of this paradigm? 