In C, there is no call by reference. The closest you can get is taking an address, and passing a copy of that address (by value -- see below).
In C++, call by reference passes a reference to an object (an alias for the original object). Generally this will be implemented as the object's address, though that's not guaranteed.
Call by value means taking a value of some sort, and passing a copy of that value to the function.
The basic difference is that when you pass a parameter by value, the function receives only a copy of the original object, so it can't do anything to affect the original object. With pass by reference, it gets a reference to the original object, so it has access to the original object, not a copy of it -- unless it's a const reference, it can modify the original object (for one example).