比如
int a = 3;
fun(a); // 把 a 的值放入堆
fun2(&a); // 把 a 的地址放入堆
所以在 fun 里改変 a 的值时, 呼叫者中的 a 值不変
在 fun2 里改変 a (此时 a 是地址) 时, 呼叫者中的 a 值也是不変的, 但如果是改変 a 指着的数据的话, 这些数据是会改変的, 所以一般的用法是 - 在不需要改変呼叫者参数里的值时, 用传值, 要改変呼叫者参数里的值时, 用传引用, 另外如果要传入的是一些比较大的结構数据, 为了效率, 就算不改変其值也会使用传引用的, 因为不用把大量数据拷進堆里