Да, получение указателя на указатель:
void function(int **array, size_t elements)
{
*array = malloc(sizeof(int) * elements);
if (*array == NULL)
{
// raise error
}
}
int main(void)
{
int *array;
function(&array, 10);
return 0;
}
другой вариант - вернуть адрес (выделенное пространство) из функции:
int *function(size_t elements)
{
int *array = malloc(sizeof(int) * elements);
if (array == NULL)
{
// raise error
}
return array;
}
int main(void)
{
int *array = function(10);
return 0;
}