I am learning how to create dynamic 1D arrays in C. The code below tries to do the following:
- Using
malloc
, create a dynamic array of length10
, that holds values of typedouble
. - Set each entry of the array to
j/100
forj = 0, 1,..., 9
. Then print it out. - Add an additional empty entry to the end of the array using
realloc
. - Set the new entry to
j/100
and print out each entry again.
Testing:
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);
Questions
Am I coding this right?
Tutorials I found use
malloc
without putting the(double*)
in front. E.g.,int *pointer;
pointer = malloc(2*sizeof(int));
This does not compile for me on Visual Studio 2010, Windows 7. The error message is
value of type void cannot be assigned to entity of type
int
.
Why does it work for those tutorials and not for me? Am I right to guess that it is because the compilers they are using automatically fill in the (int*)
for them in my example?
<something>.c
. – Wintry