¿Cuál es la diferencia entre pasar por referencia y usar la notación del puntero C?Diferencia entre pass-by-reference & y *?
void some_function(some_type& param)
y
void some_function(some_type *param)
Gracias
¿Cuál es la diferencia entre pasar por referencia y usar la notación del puntero C?Diferencia entre pass-by-reference & y *?
void some_function(some_type& param)
y
void some_function(some_type *param)
Gracias
Cuando pasa un puntero a una variable en una llamada de subrutina, la dirección de esa variable se pasa a la subrutina. Para acceder a la variable en la subrutina, el puntero debe ser desreferenciado.
Cuando pasa una referencia a una variable, el compilador se ocupa de obtener la dirección de la variable cuando la variable se pasa a la subrutina y desreferenciar la variable en la subrutina.
¡Maravilloso! Esto ayuda mucho! –
Definitivamente NO es un azúcar sintáctico. Hay diferencias, como puede ver en las otras respuestas. – SadSido
Hay muchas diferencias sutiles entre las dos ya que una referencia es un alias. Vea abajo. –
Básicamente maneja un puntero seguro como si fuera su propio objeto.
puede obtener fácilmente una referencia nula desreferenciando un puntero nulo. – Jherico
¿Eso es defensivo o paranoico? –
Generalmente es más un error: sus puntos de referencia para un objeto que ha sido destruido o que nunca ha existido. Ejemplo infame: 'std :: vector
Dudo que alguien vaya a reproducir uno de los 1000 tutoriales y explicaciones que ya existen aquí. Eche un vistazo a: http://www.parashift.com/c++-faq-lite/references.html – pmr
posible engaño: http://stackoverflow.com/questions/57483/difference-between-pointer-variable-and -reference-variable-in-c – Jherico
duplicado: http://stackoverflow.com/questions/1322517/passing-a-modifiable-parameter-toc-c-function – SadSido