Estoy un poco confundido sobre cómo funcionan los punteros.C++ Pase el puntero a la función (Cómo) + Manipulación del puntero C++
Digamos que tengo la siguiente función y el puntero, y ...
EDITAR:
... Quiero usar un puntero a un objeto como un argumento de 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 el * Puntero y & notaciones Pointer, estoy muy confundido. Sé que * Pointer significa dar lo que apunte.
Pongo void (int * pointer) en la declaración. ¿Qué pasa cuando uso la función?
Su ayuda es apreciada.
EDIT 2:
Vale, ahora entiendo que el uso de * variable en una declaración significa que se le pasará un puntero. Sin embargo, ¿qué pasa cuando uso la función?
es decir
int main(){
int foo;
int *bar;
bar = foo;
Fun(bar);
}
Datos 3: bien, así que me corrija si estoy equivocado:
De acuerdo con las convenciones del código anterior:
bar = & medios foo : Hacer punto de barra a foo en la memoria
* bar = foo significa Cambiar t l valor que los puntos de barras para igualar lo foo es igual
Si tengo un segundo indicador (int * uf), entonces:
bar = uf significa: puntos de barras para el puntero uf
bar = * uf significa: puntos de barras al valor que los puntos oof, pero no a la propia puntero uf
* bar = * uf significa: cambiar el valor que los puntos de barras para que el valor que los puntos de oof a
& bar = & oof significa: cambiar la dirección de la memoria que la barra apunta a ser la misma que la dirección de memoria que contiene
¿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 una wiki de la comunidad, pero me iré de esta manera para la edición (no dude en convertirlo en una guía de referencia si lo desea).
Su segunda edición es casi correcta, sin embargo, – Tomas
"¿Es correcto?". No. No quiere que 'bar' sea * igual * a' foo', quiere que * apunte a * 'foo'. Esto se hace con el operador de dirección. 'bar = &foo;'. –
bar = foo, no es válido, ya que foo es un int y barra un puntero. El código correcto es "bar = & foo" porque como un puntero, la barra solo puede almacenar direcciones de memoria, no un int. Perdón por las respuestas del comentario. – Tomas