English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C++ arrays e funções

Neste artigo, você aprenderá a passar arrays para C ++função dentro. Você aprenderá como passar arrays unidimensionais e multidimensionais.

arraypode ser passada como parâmetroFunção. Também é possível retornar um array da função. Considere o seguinte exemplo, passando um array unidimensional para a função:

Exemplo1: Passando um array unidimensional para a função

C ++O programa exibe notas passando um array unidimensional para a função5notas de alunos.

#include <iostream>
using namespace std;
void display(int marks[5]);
int main()
{
    int marks[5]] = {88, 76, 90, 61, 69};
    display(marks);
    return 0;
}
void display(int m[5])
{
    cout << "Mostrar notas: " << endl;
    for (int i = 0; i < 5; ++i)
    {
        cout << "Student " << i + 1 <<": "<< m[i] << endl;
    }
}

Resultados de saída

Mostrar notas: 
Student 1: 88
Student 2: 76
Student 3: 90
Student 4: 61
Student 5: 69

Quando se passa um array como parâmetro para uma função, apenas o nome do array é usado como parâmetro.

display(marks);

Também é importante notar a diferença entre passar um array como parâmetro e passar uma variável.

void display(int m[5]);

Os parâmetros marks na código acima representam o array marks[5] endereço de memória.

o primeiro elemento do parâmetro de forma da declaração da função int m [5] convertido para int * m; o ponteiro aponta para o mesmo endereço de memória que o array marks[

Isso é a razão, apesar da função estar sendo usada em uma função definida pelo usuário com diferentes nomes de array m[5operar, mas o array original ainda está operando no marks.}}

C ++maneira de lidar com a passagem de arrays para funções para economizar memória e tempo.

Passar arrays multidimensionais para função

Matriz MultidimensionalPode ser passado de maneira semelhante a arrays unidimensionais. Considere o seguinte exemplo de passar um array bidimensional para uma função:

Exemplo2: Passar arrays multidimensionais para função

C ++O programa exibe o array bidimensional passando seus elementos para a função.

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

Resultados de saída

Mostrar valor: 
3 4 9 5 7 1

No programa acima, o array multidimensional num é passado para a função display().

dentro da função display(), usa loops for aninhados para percorrer o array n (num).

Este programa usa2umloop forpercorrer os elementos do array bidimensional. Se for um array tridimensional, deve-se usar3 loop for.

Finalmente, todos os elementos são impressos na tela.

Nota: dimensões maiores2arrays multidimensionais podem ser passados de maneira semelhante a arrays bidimensionais.

C++ Retornar array de função

C++ Não é permitido retornar um array completo como parâmetro de função. Mas você pode retornar um ponteiro para o array, especificando o nome do array sem índice.

Se você quiser retornar um array unidimensional de uma função, você deve declarar uma função que retorna um ponteiro, conforme a seguir:

int * myFunction()
{
.
.
.
}

Além disso, C++ Não é permitido retornar o endereço de uma variável local fora da função, a menos que a variável local seja definida como static variável.

Agora, vamos olhar para a função a seguir, que gera 10 gerar números aleatórios, e usar um array para retorná-los, conforme a seguir:

#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
// Função para gerar e retornar números aleatórios
int * getRandom()
{
  static int r[8];
 
  // Definir a semente
  srand((unsigned)time(NULL));
  for (int i = 0; i < 8; ++i)
  {
    r[i] = rand();
    cout << r[i] << endl;
  }
 
  return r;
}
 
// A função principal para chamar a função definida acima
int main ()
{
   // Um ponteiro para inteiro
   int *p;
 
   p = getRandom();
   for ( int i = 0; i < 8; i++ )
   {
       cout << "*(p + " << i << ) : ";
       cout << *(p + i) << endl;
   }
 
   return 0;
}

Quando o código acima for compilado e executado, ele produzirá o seguinte resultado:

30737
23110
21765
14820
8295
12330
28395
191
*(p + 0) : 30737
*(p + 1) : 23110
*(p + 2) : 21765
*(p + 3) : 14820
*(p + 4) : 8295
*(p + 5) : 12330
*(p + 6) : 28395
*(p + 7) : 191