Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Duda tonta sobre punteros!

Estas en el tema de Duda tonta sobre punteros! en el foro de C/C++ en Foros del Web. Hola de nuevo! provando una cosas, me equivoce en el codigo y vi que funcionaba igual. 1r os dejo el fragmento para saber de que ...
  #1 (permalink)  
Antiguo 11/04/2013, 15:51
vib
 
Fecha de Ingreso: marzo-2011
Mensajes: 43
Antigüedad: 13 años, 1 mes
Puntos: 0
Duda tonta sobre punteros!

Hola de nuevo!
provando una cosas, me equivoce en el codigo y vi que funcionaba igual.
1r os dejo el fragmento para saber de que estoy hablando! xD
Código:
int main()
{
	 int *ar;
	for(int i=0; i<TAM; i++) ar[i]=i;
	for(int i=0; i<TAM; i++) cout<<ar[i]<<endl;
       return 0;
}
Esto funciona, queria saber porque? :S
Ami en la universidad siempre me habian dixo que la forma correcta era
Código:
int *ar;
ar= new int[X];
Y claro viendolo asi veo que el puntero no necesito inicializarlo previamente con un tampaño xd
Se puede hacer ? o eso a lo largo da problemas?
Porque para array que no sabia el tamaño exacto usaba vectores pero claro si esto no es problema creo que me renta mas
Gracias
  #2 (permalink)  
Antiguo 11/04/2013, 16:49
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Duda tonta sobre punteros!

Eso a la larga te va a traer problemas. Te esta funcionando de casualidad. Cuando tengas mas variables vas a notar que cambian de valor mágicamente.
Siempre necesitas inicializarlo con algún tamaño.
  #3 (permalink)  
Antiguo 12/04/2013, 07:10
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 11 años, 9 meses
Puntos: 28
Respuesta: Duda tonta sobre punteros!

Los punteros son unas zorras, no dan muestra de ningún error pero al día siguiente todo el sistema se te va abajo.

Has creado un puntero que apunta a una zona aleatoria de la memoria, si usas el operador [] estas accediendo a las zonas adyacentes a esta.

Si esa zona está vacía o pertenece a tu programa, quizás el SO te lo pase. Pero si la zona es parte de otro programa, el SO te enviará a freir esparragos.

Por otro lado, escribir en zonas vacías tiene su riesgo. Otro programa podría reclamar esa zona como suya, cambiadote el valor de tus variables o provocandote un error de ejecución.

En resumen, no lo hagas.

Etiquetas: funcion, int
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:15.