Ничего из этого не имеет значения, потому что вы не возвращаете указатель на выделенную память;вы просто теряете память.
Попробуйте что-то вроде этого:
double *allocate_array(size_t size)
{
double *ptr = malloc(sizeof *ptr * size); // note no cast, operand of sizeof
if (ptr)
{
size_t i;
for (i = 0; i < size; i++)
{
ptr[i] = (double) (i+1); // ptr[0] = 1.0, ptr[1] = 2.0, ptr[2] = 3.0, etc.
}
}
return ptr;
}
, и вы назовете это как
double *myArray = allocate_array(100);
, когда закончите смассив, вам нужно освободить его:
free(myArray);
Обратите внимание, что единственное, что вы не хотите сделать в allocate_array
, это изменить значение ptr
, по крайней мерене без сохранения этого значения где-то еще;в противном случае вы не сможете free
правильно его выполнить.