Can giving the same name to formal parameters in the called functions as the actual parameters in the calling function create any problems while passing by reference?
Also, would it be any different while passing by value?
If you are talking about stuff in picture, simple answer is it does not matter at all. In "pass by value" case, value of caller function is copied to the address of parameter of called function.
When it comes to references, here is one quote:
A reference shares the same memory address with the original variable but also takes up some space on the stack whereas a pointer has its own memory address and size on the stack.
So to simplify the answer, parameter and local variable names do not matter much because compiler converts them into addresses. As seen from above, even reference has to store the address of referred variable.
My suggestion is read this. And think of variables or parameters in term of addresses, not in terms of their names.