Hace tiempo que no programo en C pero segun recuerdo, cuando haces esto
Código:
void funcion(int &a, int b)
estas declarando una funcion que espera en el primer parametro un apuntador a un entero. No un valor sino un apuntador a un valor.
Si en tu funcion main utilizas esto
Código:
funcion(&variable1, variable2)
entonces tu funcion la debes declarar como
Código:
void funcion(int &a, int b)