just as what indicated in the title
For pod types like int, char, short, and float the size of the data is the same size (or smaller) than the address passed in to reference the actual data. Looking up the value at the referenced address is an unnecessary step and adds additional cost.
For example, take the following functions foo and bar
void foo(char& c) {...}
void bar(char c) {...}
When foo is called an address is passed by value of either 32bits or 64bits, depending on your platform. When you use c within foo you have the cost of looking up the value of data held at the passed in address.
When calling bar a value of the size of char is passed in and there is no address lookup overhead.