[C con Clase] puntero vacio

Steven Davidson steven en conclase.net
Vie Jun 8 06:11:29 CEST 2007


Hola Rodolfo,

El pasado 2007-06-08 03:48:38, rodolfo escribió:

r> Hola a Todos.-
r> Primero, quiero agradecerte Steven por tu  rápida contestación a mi pregunta 
r> sobre funciones constantes, como siempre quedo aclarado, recien te agradezco 
r> hasta ahora porque no quiero sobrecargar la bandeja de correo con 
r> agradecimientos.

Agradecemos que esperes a enviar otros mensajes junto con la gratitud. Como bien dices, no es plan sobrecargar los buzones de correos-e con mensajes exclusivamente de agradecimiento. Supongo que este tipo de mensajes es bienvenido si se hace en privado, pero no públicamente si es con exclusividad.

r> Respecto a mi pregunta es mas bien teórica en este caso, y para quien me la 
r> pueda y quiera contestar:
r> Si declado un puntero a char de esta manera:
r> char *ptr1;
r> ¿ como se puede preguntar si es que no apunta a ninguna parte ? para poder 
r> manipularlo con seguridad
r> He probado if(ptr1 == 0)  y  if(ptr1 == NULL) y no me responde

Nos enfrentamos al mismo problema con variables locales de otros tipos. Por ejemplo,

int num;
cout << num;

¿Qué valor sale en pantalla? La respuesta es que cualquier valor arbitrariamente puede aparecer, ya que 'num' contiene "basura"; es decir, cualquier valor que quedaba en memoria de una operación anterior.

Lo mismo sucede con los punteros, que al fin y al cabo son también variables. El puntero 'ptr1' contiene basura y por tanto "apunta" a cualquier valor en memoria. Creo que no hace falta decir que esto es MUY peligroso, porque seguramente el sistema operativo se quejará en cuanto intentemos acceder a tal zona de memoria.

Por estas razones, siempre aconsejo inicializar las variables. Para punteros, sugiero crear un puntero nulo. Esto es,

char *ptr1=0;


Espero haber aclarado la duda.

Steven


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