Я хочу добавить числа в пустой массив, и количество этих чисел неизвестно в начале. Например, генерирование чисел от 1 до 10 и добавление один за другим.
generateFromOneToTen
сохранит мой результат в output
, а count
должно быть 10 после выполнения. Все в порядке, если я напечатаю результат в этой функции.
int generateFromOneToTen(int *output, int count)
{
for (int i = 0; i < 10; i++) {
output = arrayAppendInt(output, i + 1, count);
count++;
}
// Print result of `output` is 1,2,3...10 here
return count;
}
И я реализовал arrayAppendInt
для динамического увеличения длины массива и добавления нового значения после старых.
int *arrayAppendInt(int *array, int value, int size)
{
int newSize = size + 1;
int *newArray = (int*) realloc(array, newSize * sizeof(int));
if (newArray == NULL) {
printf("ERROR: unable to realloc memory \n");
return NULL;
}
newArray[size] = value;
return newArray;
}
Здесь возникает вопрос. При вызове функции генерации numbers
всегда будет NULL
. Как я могу вернуть сгенерированные числа в переменную numbers
?
int *numbers = NULL;
int count = 0;
count = generateFromOneToTen(numbers, 0);
^^^^^^^