В псевдокоде, я хотел бы заменить:Succinct динамическое выделение памяти в C
ra = (double *) realloc(ra, Num*sizeof(*ra));
dec = (double *) realloc(dec, Num*sizeof(*dec));
zobs = (double *) realloc(zobs, Num*sizeof(*zobs));
M_B = (double *) realloc(M_B, Num*sizeof(*M_B));
с
например, mem_allocate (& ра, & Декабрь, & ZOBS, & M_B)
где
mem_allocate(arg1, arg2,..., arg4){
for argi in arg1 to arg4{
argi = (double *) realloc(argi, Num*sizeof(*argi))
}
}
Как функция знает 'Num'? Это постоянный? Разве не лучше было бы передать это как параметр? – Lundin
Вы не можете перебирать обычные аргументы в C. Однако вы можете написать это как функцию varargs. Это может быть более гибким, чем функция для фиксированного количества аргументов. –
Если вы * переписываете его как функцию, тогда добавьте лучшую обработку ошибок. В частности, не теряя адрес старого блока памяти, когда 'realloc' возвращает нулевой указатель. – StoryTeller