Hola!
He estado aprendiendo sobre los punteros pero no se en que se usan, no les veo una utilidad real. Alguien podría explicarme de que modo se usan en un programa y si es posible un pequeño ejemplo?
Gracias.
Hola, los punteros es uno de los topics mas dificil de aprender pero a su vez es una de las herramientas mas utiles en C.
De hecho en mi opinion personal yo no le veo utilidad a los arreglos estaticos... en fin es mi mera opinion.
Imagina que tienes que capturar una cantidad desconocida de datos de un mismo tipo.
Que haces declaras un arreglo... pero cuantos datos reservas? 100? 1000? un millon?
Que pasa si el usuario solo ingresa 2? habras desperdiciado memoria!!! Que pasa si el usuario ingresa 2 millones de datos? no te alcanzara!!! entonces cual es la solucion??? El uso de apuntadores y memoria dinamica.
Un ejemplo?
Te dejo uno de mis videos donde hablamos de la estrucutra de dator Arbol binario y como los punteros nos ayudan a cargar una cantidad variable de datos.
[youtube=640,360]https://www.youtube.com/watch?v=b-rnszAiQgc[/youtube]
No entiendo algunas cosas del video debido a que aun no se mucho de c++, pero aun asi tu ejemplo me sirvió para entender en que se pueden usar, gracias :D
Aqui te dejo un ejemplo como el descrito, el ejemplo genera un arreglo de enteros y los llena con valor random hasta que el valor random coincida con 20000
Saludos!
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
int main() {
int *arreglo = NULL;
unsigned int i = 0;
srand(time(NULL)); //Inicilizamos la semilla aleatoria
do {
arreglo =(int*) realloc(arreglo,(i+1)*sizeof(int)); //reservamos para i+1 elementos
arreglo[i] = rand(); //Guardamos un numero random en arreglo[i]
printf("Guardando %i en el arreglo posicion [%lu]\n",arreglo[i],i);
i++; //Incrementamos contador
}while(arreglo[i-1] != 20000); //Continuamos hasta que el numero sea 20000
printf("Se guardardon %lu elementos\n",i);
return 0;
}
En la linea 7 has puesto "int *arreglo = NULL;" que hace el igualarlo a NULL? lo he visto varias veces y no se que es...
Todas las variables se deben de inicializar.
Se inicializa en NULL para indicar que no esta apuntado a NADA.
Y realloc valida que si esta en NULL genera un nuevo apuntador.
Saludos!
Hice un video de este tema
[youtube=640,360]https://www.youtube.com/watch?v=HzYRDD_-1Yc[/youtube]