[C con Clase] Dudas sobre punteros que apuntan a punteros

Salvador Pozo salvador en conclase.net
Mie Ene 23 22:05:29 CET 2013


El pasado 2013-01-23 20:45:53, Javier escribió:
 
J> ¿Podéis explicarme el porqué de este caso? No os cortéis escribiéndolo para tontos, que así seguro que em entra en la sesera  :-D

Hola:

El secreto es cómo está sobrecargado el operador << para punteros a char, que es distinta que para otros punteros, y para cualquier tipo en general.

En el fichero iostream están las definiciones del operador << para distintos tipos de objetos. La diferencia es que cuando se trata de un puntero a int, no hay un comportamiento lógico que podamos aplicar, y por lo tanto, de definición se limita a mostrar la dirección.

En cambio, para un puntero a char, la definición del operador asume que se trata de una cadena de caracteres terminada con un carácter nulo. El comportamiento en este caso consiste en mostrar todos los caracteres a partir de la dirección dada, hasta que encuentra un nulo.

(Hay un peligro real, aunque limitado, en este comportamiento. Si enviamos una dirección en un puntero a char de una zona de memoria donde no haya ningún cero, la salida de cout no terminaría nunca. En la práctica siempre hay algún cero en memoria, más o menos lejos, pero a veces se pueden mostrar muchos ciento o miles de caracteres antes de llegar a él. De ahí la importancia de inicializar punteros y a veces también sus contenidos). 

Más adelante, en el curso, se explica cómo sobrecargar el operador << para cualquier objeto de las clases que diseñemos, de modo que podamos enviar a cout cualquiera de ellos, y que se muestre como a nosotros nos convenga.

Hasta pronto.

-- 
Salvador Pozo (Administrador)
mailto:salvador en conclase.net


Más información sobre la lista de distribución Cconclase