Ваша непосредственная проблема заключается в том, что last
массив перестает существовать , как только выходит из функции range
, поэтому возвращаемый указатель больше не действителен.
Если выЕсли range
выделит память для массива, а также инициализирует его содержимое, то вам придется динамически распределять память:
int *range( int a, int b )
{
int *last = malloc( sizeof *last * b );
if ( last )
{
for ( size_t i = a; i < b; i++ )
last[i] = i;
}
return last;
}
Вам нужно будет запомнить free
эту памятькогда вы закончите с этим.
Быстрый комментарий - мне не ясно, как вы собираетесь range
работать, когда дело доходит до установки значений.Если бы вы вызвали range(3,6)
, вы бы получили массив из 6 элементов, но вы бы только установили значения last[3]
, last[4]
и last[5]
, оставив от last[0]
до last[2]
, содержащие неопределенные значения,Если это то, что вы хотели, отлично.Если нет, вы захотите переосмыслить это.