Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Linguagem C

Como Passar Arrays para Funções em C++: Guia Prático

Como Passar Arrays para Funções em C++

Este guia explica como passar arrays uni e multidimensionais para funções em C++ usando exemplos reais de código.

Em C++, arrays podem ser fornecidos como argumentos de função, e você pode até retorná-los indiretamente via ponteiros. Entender a mecânica por trás da conversão de array para ponteiro e o impacto na memória e performance é essencial para escrever código eficiente.


Sintaxe para Passar Arrays como Parâmetros de Função

A declaração para uma função que aceita um array se parece com isto:

tipoRetorno nomeFuncao(tipoDado nomeArray[tamanhoArray]) { // corpo da função }

Exemplo:

int total(int notas[5]) { // implementação }

Aqui, notas é um array int de cinco elementos. Quando a função é chamada, apenas o nome do array (um ponteiro para seu primeiro elemento) é passado.


Exemplo 1: Passando Array Unidimensional para uma Função

#include <iostream> using namespace std; // Declara função para exibir notas void exibir(int m[5]) { cout << "Exibindo notas:" << endl; for (int i = 0; i < 5; ++i) { cout << "Aluno " << i + 1 << ": " << m[i] << endl; } } int main() { int notas[5] = {88, 76, 90, 61, 69}; exibir(notas); // Passa array pelo nome return 0; }

Saída

Exibindo notas: Aluno 1: 88 Aluno 2: 76 Aluno 3: 90 Aluno 4: 61 Aluno 5: 69

Pontos-chave:

  1. Chamar exibir(notas); passa o endereço de notas[0].
  2. Dentro da função, int m[5] é tratado como int* m;, apontando para a mesma memória.
  3. Modificar m[i] altera o array original notas, ilustrando semântica de passagem por referência.

Passando Array Multidimensional para uma Função

Para arrays 2-D, você deve especificar o número de colunas (o tamanho da segunda dimensão) para que o compilador possa calcular deslocamentos de elementos.

Exemplo 2: Passando Array Bidimensional para uma Função

#include <iostream> using namespace std; void exibir(int n[][2]) { cout << "Exibindo valores:" << endl; for (int i = 0; i < 3; ++i) { for (int j = 0; j < 2; ++j) { cout << "num[" << i << "][" << j << "]: " << n[i][j] << endl; } } } int main() { int num[3][2] = {{3, 4}, {9, 5}, {7, 1}}; exibir(num); return 0; }

Saída

Exibindo valores: num[0][0]: 3 num[0][1]: 4 num[1][0]: 9 num[1][1]: 5 num[2][0]: 7 num[2][1]: 1

Notas:

Arrays de dimensões superiores seguem a mesma regra: o tamanho de todas as dimensões, exceto a primeira, deve ser especificado.


Retornando um Array de uma Função

Funções não podem retornar um array inteiro diretamente. Em vez disso, retornam um ponteiro para o primeiro elemento, que pode referenciar um array alocado estaticamente, um array dinâmico ou um objeto temporário. Cuidado deve ser tomado para evitar retornar ponteiros para arrays locais (stack), o que resultaria em referências pendentes.

Exemplo (array estático):

int* obterArray() { static int arr[5] = {1, 2, 3, 4, 5}; return arr; // ponteiro para primeiro elemento }

Para alocação dinâmica, considere retornar um std::vector<T> para segurança e gerenciamento automático de memória.

Leitura adicional sobre manipulação segura de arrays em C++ é recomendada para código de produção.

Linguagem C

  1. Dominando Arrays Irregulares (Jagged Arrays) em C#: Declaração, Inicialização e Acesso
  2. Dominando Operadores em C++: Guia Completo com Exemplos Práticos
  3. Funções Amigas e Classes Amigas em C++: Dominando o Controle de Acesso
  4. Dominando Operadores em Programação C: Um Guia Abrangente
  5. Arrays em C++ Desmistificados: Declaração, Inicialização e Técnicas com Ponteiros
  6. Dominando Alocação Dinâmica de Arrays em C++: Guia Prático com Exemplos de Código
  7. Sobrecarga de Operadores em C++: Guia Prático com Exemplos de Código
  8. Funções em C++ Explicadas com Exemplos Práticos de Código
  9. Domine a Programação em C: Tutorial Completo para Iniciantes
  10. Dominando Sobrecarga em C++: Funções e Operadores Explicados