EU gostaria de saber se há como criar uma função que retorne um array de qualquer tipo na linguagem C. Caso haver outras maneiras mais práticas de se resolver isso, será bastante proveitoso compartilhá-las. Desde já, obrigado!
Vou dar um exemplo de uma rotina que volta um array de int, inicializado com os valores de 0 até n - 1.
int * retornaArray(int n) {
int i;
int * array = (int *) calloc (n, sizeof (int));
for (i = 0; i < n; ++i) {
array[i] = i;
}
return array;
}
Muito obrigado pelo exemplo.
Denner, só lembrando duas coisas para você:
a) Não se deve retornar o endereço de um array criado localmente - por exemplo, isto vai dar problemas sérios:
int * retornaArray20Posicoes () {
int i;
int array [20];
for (i = 0; i < n; ++i) {
array[i] = i;
}
return array;
}
Razão: retornar o endereço de uma variável local é perigoso porque irá referir-se a um endereço inválido.
b) O que foi alocado com malloc ou calloc deve ser deletado com free.