English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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:
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.
Matriz MultidimensionalPode ser passado de maneira semelhante a arrays unidimensionais. Considere o seguinte exemplo de passar um array bidimensional para uma 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++ 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