elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda con punteros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda con punteros  (Leído 1,873 veces)
neg1414

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Duda con punteros
« en: 30 Mayo 2013, 09:35 am »

 Es posible saber si un puntero a sido ya inicializado...


 Gracias


En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Duda con punteros
« Respuesta #1 en: 30 Mayo 2013, 10:01 am »

Es posible saber si un puntero a sido ya inicializado...
Por convenio, los punteros que no apuntan a nada se les suele poner valor NULL.


En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
neg1414

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Duda con punteros
« Respuesta #2 en: 30 Mayo 2013, 11:27 am »

 Gracias por contestarme...

 Trabajo con c++ Builder y en principio yo tambien creo que un puntero no inicializado apunta a NULL PERO....

 En una Clase1 que he creado he definido una variable global que va a ser un vector de la forma

 
Código:
TClaseArray  *Vector;

 
Durante el proceso aveces lo inicializarlo de la forma

Código:
  Vector  = new TClaseArray[TotalArray]  


otras no llego a inicializarlo

Al destruir la clase1 en el destructor (dado que aveces inicializo y otras no) he puesto la condicion :

Código:
if(Vector !=NULL ){delete []  Vector ;  Vector  = NULL;}


Siempre se cumple la condicion aunque no se inicialize el vector y claro esta cuando NO inicializo el Vecotr da ERROR

Si inicializo siempre el Vector nunca me da error...

Que hago mal...Gracias

En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Duda con punteros
« Respuesta #3 en: 30 Mayo 2013, 12:05 pm »

Nada más declarar el puntero apunta a basura, tienes que darle un valor inicial:

Código:
TClaseArray  *Vector = NULL;


Por cierto, el condicional se puede abreviar:

Código
  1. if (Vector) // Si vector tiene un valor válido
  2. {
  3.  delete []  Vector;
  4.  Vector  = NULL;
  5. }
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
neg1414

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Duda con punteros
« Respuesta #4 en: 30 Mayo 2013, 13:18 pm »

ok,

Muchas Gracias
En línea

lucaslopez0000

Desconectado Desconectado

Mensajes: 95


Ver Perfil WWW
Re: Duda con punteros
« Respuesta #5 en: 4 Junio 2013, 21:26 pm »

Hola , veras te explico , como han dicho arriba , es una buena costumbre inicializar los punteros , y en general cualquier variable. Aun asi , es algo que tu no puedes saber , ya que si tu compilas este programa

Código
  1. #include <stdio.h>
  2.  
  3. int main(int argc , char *argv[])
  4. {
  5.         int numero; // Lo dejo sin inicializar
  6.         printf("La variable numero es %d\n" , numero);
  7.         return 0;
  8. }
  9.  

Cada vez que lo ejecutes obtendras un valor distinto para numero , ya que
al no estar inicializado , cuando el programa pide al sistema que le de un chachito
de memoria , esa memoria contiene datos 'basura' que se llaman , de otras ejecuciones que usaron esa memoria antes ... etc , etc , etc
Puede que en windows obtengas varias veces el mismo numero , no pasa nada
, pero por lo general obtendras numeros distintos en cada ejecucion.

Y ahora vamos con los punteros. Si un puntero no esta inicializado , apuntara
a una direccion de memoria (pseudo)aleatoria. Si por accidente modificas la zona de memoria apuntada , pueden ocurrir 2 cosas
1. Te salgas de tu zona de memoria y haya violacion del segmento
2. Sobreescribas instrucciones de tu programa y empieze a hacer cosas raras

Espero que te haya servido mi respuesta
En línea

La manera mas simple de solucionar los problemas de windows , los virus , el spyware , la basura de microsoft en general

USA LINUX
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[C] - Duda punteros
Programación C/C++
h0oke 2 2,356 Último mensaje 23 Mayo 2010, 02:19 am
por h0oke
Duda con punteros
Programación C/C++
cazagavilan 5 2,873 Último mensaje 14 Abril 2012, 05:47 am
por cazagavilan
Duda Punteros Dobles/Array de punteros
Programación C/C++
MisterJava 2 4,901 Último mensaje 30 Diciembre 2012, 20:19 pm
por MisterJava
Duda con Punteros en C
Programación C/C++
LeoJ24 2 1,710 Último mensaje 13 Enero 2013, 20:49 pm
por ameise_1987
Duda con Punteros en C
Programación C/C++
LeoJ24 6 2,214 Último mensaje 16 Enero 2013, 20:57 pm
por dooque
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines