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/100forj = 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/100and 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
mallocwithout 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?