wagner-cipriano

Pass an array pointer as parameter into a function in C++

Jun 20th, 2020
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.46 KB | None | 0 0
  1. /*
  2. Trabalhando com ponteiros em funções - Array 2D como ponteiro
  3. Passando a matriz como ponteiro para a função (int * arr)
  4. Neste método, estamos passando referência de matriz usando ponteiro
  5. para a função e acessando a matriz (array 2D) como array unidimensional.
  6. ---
  7. Isso é possível pois o vetor 2D é armazenado da mesma forma que um array de uma
  8. dimensão (de foma contínua) na memória.
  9. */
  10.  
  11. #include <iostream>
  12. using namespace std;
  13.  
  14. void leMatriz(float *mat, int m, int n);
  15. void imprimeMatriz(float *mat, int m, int n);
  16.  
  17. int main(){
  18.     //Dimensões da Matriz
  19.     int m, n;
  20.     cout << "Matriz com ponteiros:\n  Ler e imprimir Matriz\n\nInforme a qtde de linhas e colunas da Matriz: ";
  21.     cin >> m >> n;
  22.     //Declarar matriz
  23.     float notas[m][n];
  24.  
  25.     cout << "\nPreencha os dados da matriz: " << endl;
  26.     leMatriz(*notas, m, n);
  27.  
  28.     cout << "\nDados da matriz: " << endl;
  29.     imprimeMatriz(*notas, m, n);
  30.  
  31.     return 0;
  32. }
  33.  
  34. void leMatriz(float *mat, int m, int n) {
  35.     int idx = 0;
  36.     for(int i=0; i<m; i++) {
  37.         for(int j=0; j<n; j++) {
  38.             cout << "  m[" << i << "][" << j << "]: ";
  39.             cin >> mat[idx];
  40.             idx++;
  41.         }
  42.     }
  43. }
  44.  
  45. void imprimeMatriz(float *mat, int m, int n) {
  46.     for(int idx=0; idx<m*n; idx++) {
  47.         cout << " " << mat[idx];
  48.         //Sempre que acabar uma linha, fazemos o endl
  49.         if((idx+1) % n == 0)
  50.             cout << endl;
  51.     }
  52.     cout << endl;
  53. }
Add Comment
Please, Sign In to add comment