estoy aprendiendo cómo crear matrices 1D dinámicos en C. El código siguiente intenta hacer esto:Dynamic Array in C - ¿Es correcto mi entendimiento de malloc/realloc?
- crear una matriz dinámica de longitud 10, que contiene dobles, utilizando malloc.
- Establezca cada entrada de la matriz en
j/100
para j = 0,1, ..., 9. A continuación, imprima . - Agregue una entrada vacía adicional al final de la matriz con realloc.
- Establezca la nueva entrada en
j/100
e imprima de nuevo cada entrada.
pruebas
double* data = (double*)malloc(10*sizeof(double));
for (j=0;j<10;j++)
{
data[j]= ((double)j)/100;
printf("%g, ",data[j]);
}
printf("\n");
data = (double*)realloc(data,11*sizeof(double));
for (j=0;j<11;j++)
{
if (j == 10){ data[j]= ((double)j)/100; }
printf("%g, ",data[j]);
}
free((void*) data);
Preguntas
1) ¿Estoy codificando este derecho?
2) Tutoriales que encontré usar malloc
sin poner el (double*)
en frente. P.ej.
int *pointer;
pointer = malloc(2*sizeof(int));
Esto no compila para mí en Visual Studio 2010, Windows 7. El error es "valor de tipo void no se puede asignar a la entidad de tipo int".
¿Por qué funciona para esos tutoriales y no para mí? ¿Tengo razón para adivinar que es porque los compiladores que están utilizando completan automáticamente el (int*)
para ellos en mi ejemplo?
"value of type void no se puede asignar a la entidad de tipo int" no es un error que debe producir un compilador * C *. El problema es que estás usando un compilador * C++ *. Asegúrese de que su archivo fuente se llame ' .c'. –