C ++ Pasando el puntero a la función (Howto) + C ++ Pointer Manipulation

Estoy un poco confundido sobre cómo funcionan los punteros que pasan.

Digamos que tengo la siguiente función y puntero, y ...

EDITAR:

... Quiero usar un puntero a algún objeto como argumento en la función.

es decir.:

void Fun(int Pointer){
    int Fun_Ptr = ---Passed Pointer---; 
    //So that Fun_Ptr points to whatever ---Passed Pointer points to

Entre las anotaciones * Pointer y & Pointer, estoy muy confundido. Sé que * Puntero significa dar lo que sea que apunte.

¿Pongo void (int * pointer) en la declaración. ¿Qué pasa cuando uso la función?

Su ayuda es apreciada.

EDITAR 2:

Bien, ahora entiendo que usar * variable en una declaración significa que se pasará un puntero. Sin embargo, ¿qué pasa cuando uso la función?

es decir

int main(){
    int foo;
    int *bar;
    bar = foo;
    Fun(bar);
}

EDITAR 3: Bien, corrígeme si me equivoco:

De acuerdo con las convenciones del código anterior:

bar = & foo significa: Hacer que la barra apunte a foo en la memoria

* bar = foo significa Cambiar el valor al que apunta la barra para que sea igual a lo que sea igual a foo

Si tengo un segundo puntero (int * oof), entonces:

bar = oof significa: la barra apunta al puntero oof

bar = * oof significa: la barra apunta al valor al que apunta oof, pero no al puntero oof en sí

* bar = * oof significa: cambiar el valor al que apunta la barra por el valor al que apunta oof

& bar = & oof significa: cambiar la dirección de memoria que apunta la barra para que sea la misma que la dirección de memoria que apunta a

¿Tengo este derecho?

EDIT 4: Muchas gracias por toda su ayuda (ojalá pudiera aceptar más de 1 respuesta, pero tengo que ir con la primera. No estoy seguro de cómo funciona exactamente un wiki comunitario, pero lo dejaré así para edición (siéntase libre de convertirlo en una guía de referencia si lo desea).

Respuestas a la pregunta(7)

Su respuesta a la pregunta