Arrays e Funções
Parte da seção Fundamentos do Journey de C++ da Coddy — lição 62 de 74.
Arrays não podem ser passados diretamente para funções como arrays completos. Quando você tenta passar um array para uma função, ele "decai" (decays) em um ponteiro para o seu primeiro elemento.
Por exemplo:
int numbers[5] = {1, 2, 3, 4, 5};
void processArray(int arr[]) {
int size = std::size(arr);
}std::size(arr) não lhe dará o tamanho real do array. arr é na verdade um ponteiro aqui, não um array. Ponteiros serão aprendidos no próximo curso.
É por isso que, ao passar arrays para funções, geralmente precisamos passar o tamanho como um parâmetro separado:
void processArray(int arr[], int size) {
// Agora podemos trabalhar com segurança com o array usando o parâmetro de tamanho
}Veja como chamar a função:
int numbers[5] = {1, 2, 3, 4, 5};
processArray(numbers, 5);Além disso, não é possível retornar um array em uma função:
int[] processArray(int arr[]) {
return arr;
}Isso é ilegal. Em vez disso, você deve usar a sintaxe *:
int* processArray(int arr[]) {
return arr;
}
int* newArr = processArray(arr);A sintaxe de estrela (*) refere-se a ponteiros que serão discutidos no próximo curso.
Folha de consulta
Arrays não podem ser passados diretamente para funções - eles sofrem "decay" (decaimento) para ponteiros para seu primeiro elemento.
Ao passar arrays para funções, você precisa passar o tamanho como um parâmetro separado:
void processArray(int arr[], int size) {
// Trabalha com o array usando o parâmetro size
}
int numbers[5] = {1, 2, 3, 4, 5};
processArray(numbers, 5);Arrays não podem ser retornados diretamente de funções. Use a sintaxe de ponteiro em vez disso:
int* processArray(int arr[]) {
return arr;
}
int* newArr = processArray(arr);Experimente você mesmo
Esta lição não inclui um desafio de código.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
4Operadores Parte 1
Operadores AritméticosOperador de MóduloIncremento/DecrementoPós-incremento/DecrementoAtalhos AritméticosOperadores de ComparaçãoComparação de Strings7Fundamentos de Entrada/Saída
Comando coutComando cinEntrada de StringRevisão - Até 120Revisão - Verdadeiro ou Falso3Variáveis Parte 2
Declaração de TipoConvenções de NomenclaturaRecapitulação - Inicializar VariáveisType Casting Parte 1Type Casting Parte 26Tomada de Decisão
Estrutura IfIf - ElseEstrutura SwitchOperador CondicionalRecapitulação - If ElseIf - Else Aninhado