[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