We can call a function by value by reference by pointer , we call it by reference and pointer if we want a speedy process by value if want to keep it safe but what is the real difference between calling it by reference and pointer and when should be the best of the two options selected for given conditions.
Well, you don't call functions by value, reference, or pointer. You pass arguments by value, reference or pointer.
There is very little difference when passing by reference or a pointer, since most compilers implement references implicitly as pointers. The major difference is that you cannot have a NULL reference, or an uninitialized reference. It always has to be something. Another difference is that you can't do pointer arithmetic on a reference.