つくづくCのポインタ表記はまぎらわしいと思うな。
引数と宣言と代入で意味が混ざる。

int instance;
int* pointer = &instance;
int& reference = instance;

void function(int by_value, int* by_pointer, int& by_reference) {
 int instance_by_value = by_value;
 int instance_by_pointer = *by_pointer;
 int* pointer_by_pointer = &by_pointer;
 int instance_by_reference = by_reference;
}