 <p>For types smaller than the size of a pointer (e.g. <code>int</code>), passing by value is more efficient.<br> For types bigger than the size of a pointer (e.g. most struct or class instances), passing by reference is probably more efficient (only "probably" because on top of the cost of passing the parameter, potentially constructing an object, you incur the cost of dereferencing your parameter every time you use it). </p> <p>More details about passing-by-value vs. passing-by-reference can be found in <a href="https://stackoverflow.com/questions/2139224/how-to-pass-objects-to-functions-in-c/">this question</a>. More details about reference vs. pointer arguments can be found in <a href="http://stackoverflow.com/questions/6732706/c-passing-arguments-by-reference-and-pointer">that question</a>.</p>