str almacena la dirección (y por lo tanto los puntos) en una cadena literal, "Hola", que se almacena en algún lugar en un segmento de solo lectura de la memoria.
ptr apunta a la misma dirección que 'str'.
rptr apunta básicamente a 'str' (no al mismo punto que str, sino a str). Puede ser inusual usar 'puntos a' para las referencias, pero en realidad se parecen mucho a los punteros (en este caso, un puntero a un puntero) excepto con ligeras diferencias sintácticas y la restricción de que no pueden apuntar a ninguna otra dirección durante su toda la vida.
Sería análogo a:
char** const rptr = &str;
Como una referencia, RPTR anterior no se puede asignar una nueva dirección (no se puede cambiar lo que está señalando), pero puede ser libre de cambiar su pointee (que pasa a ser un puntero en este caso a 'str').
*rptr = 0; // after this, str == 0
Las referencias son más o menos lo mismo que un puntero de sólo lectura (no un puntero mutable a sólo lectura pointee), sólo que no requieren de un operador de desreferencia para llegar a la pointee (los datos referenciados):
char *str = "Hello";
char *&rptr = str;
rptr = 0; // after this, str == 0
la única diferencia con el ejemplo anterior con un puntero de sólo lectura al puntero es que no tuvimos que usar el operador *.
referencias const también tienen la propiedad única de poder extender la vida útil de los temporales, pero eso probablemente esté más allá del alcance de la discusión.
Posibles duplicados: http://stackoverflow.com/questions/57483/difference-between-pointer-variable-and-reference-variable-in-c http://stackoverflow.com/questions/620604/difference- parámetro-entre-un-puntero-y-referencia http: // stackoverflow.com/questions/1948467/about-pointer-and-reference-syntax y probablemente más ... – Alerty
Observe que su código no es válido en aproximadamente un año. Ha quedado obsoleto apuntar a los literales de cadena usando 'char *' durante unos diez años. –
@Johannes: te refieres a que el estándar no permite estos literales de cadena. La mayoría de los libros aún usan esta notación. ¿Dónde puedo obtener una vista previa de tales detalles? – Sam