Я запутался в своих указателях и ссылках. Я хочу создать указатель в главной функции и установить его на нуль. Я хотел бы передать этот указатель другой функции, которая создает массив в куче, заполняет его и возвращает размер созданного массива.
Я попытался найти другую статью об этой топике c, но не смог найти тот, который выделил память изнутри функции. Пример кода ниже иллюстрирует концепцию, но я не пишу программу для выполнения sh любой конкретной c задачи.
int fillarray(/* pointer to an array */){
// malloc the array to size n
// fill array with n elements
return n;
}
int main(){
int* array = NULL;
int size = fillarray(/* pass the pointer by reference */);
for(int i = 0; i < size; i++) printf("%d\n", array[i]);
free(array);
return 0;
}
ОБНОВЛЕНИЕ:
Спасибо всем за ваши комментарии. Я многое узнал об указателях, решающих эту проблему. Код ниже выполняет то, что мне нужно. Спасибо, @Lundin. Ваш ответ привел меня к фактическому решению. Спасибо @ssd также. Ваша картинка помогла мне получить некоторую интуицию о том, что я смотрю в коде.
int fillarray(int** array){
*array = (int*)malloc(2 * sizeof(int));
(*array)[0] = 0;
(*array)[1] = 1;
return 2;
}
int main(){
int* array = NULL;
int size = fillarray(&array);
for(int i = 0; i < size; i++) printf("%d\t", array[i]);
return 0;
}