hola a todos.
bueno tengo unas dudas bueno pues yo no sabia que que realloc se podia usar solo y bueno queria saber si ese metodo es igual de efectivo que usar malloc y realloc juntos.
Código (c) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
int main(){
int *lista= NULL, num, i;
do
{
i++;
lista =realloc(lista,(i)*sizeof(int));
printf("\nElemento ");
scanf ("%d", &*(lista+i));
printf("%d\n", lista);
puts("presiona uno para continuar 0 para salir");
scanf("%d", &num);
} while (num == 1);
free(lista);
return 0;
}
y tambien queria saber por que si guardo datos usando scanf al imprimir los valores me resultados erroneos asi.(aclaro esto es solo cuando se usa realloc solo.)
Código (c) [Seleccionar]
Elemento 5
154512
presiona uno para continuar 0 para salir
veo que la mayoria usa
Código (c) [Seleccionar]
//aceder a los datos
*(lista+i-1) = 5;
//guardar datos con scanf
&*(lista)
este tipo para acceder a datos de la memoria o guardar datos en ella yo por regular uso mas este metodo.
Código (c) [Seleccionar]
lista[i+1];
&lista[i];
que funciona igual, nose si algun metodo es es el correcto o los dos son corecto y es como cada quien se acomode a programar.
tambien queria saber cual es la diferencia entre esto:
Código (c) [Seleccionar]
//si en un programa pongo esto da error al llegar a los 6 registros
realloc(lista,i+1*sizeof(int));
//pero si lo pongo asi ya no tengo el error
realloc(lista,(i+1)*sizeof(int));
//codigo completo
#include <stdio.h>
#include <stdlib.h>
main()
{
int *lista,i=0,r;
puts("Lista enlazada");
lista=(int *) malloc(sizeof(int));
printf("\nElemento %d de la lista enlazada y preciona 1 para agrgar otro elmento",i+1);
scanf("%d",&*(lista));
scanf("%d",&r);
while(r==1)
{
i++;
realloc(lista,i+1*sizeof(int));
scanf("%d",&*(lista+i));
puts("Desea agregar otro elemento");
scanf("%d",&r);
}
for(int x=0;x<i+1;x++)
{
printf("%d ",lista[x]);
}
free(lista);
}
la verdad yo pense que la memoria dinamica no tenia mcuho uso pero ahora veo que te ayuda a manejar mucho mejor la memoria.
con lo que me surge otra duda si se puede trabar la memoria dinamica y manejar como matrizes, arrays unidimencionales etc. entonces cual seriamas conveniente usar memoria dinamica o las otras opciones o depende del programa que se desallorre.
bueno espero que me puedan ayudar.
saludos a todo.