I have a question as below C++ code.
this is the code(No function) that can successful execute.
#include <iostream>
using namespace std;
int main()
{
    int size_3 = 3;
    //arr1 is a static array
    int arr1[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
    //arr2 is a dynamic array
    int** arr2 = new int* [size_3];
    for (int i = 0; i < size_3; i++) {
        arr2[i] = new int[size_3];
    }
    int val = 9;
    for (int i = 0; i < size_3; i++) {
        for (int j = 0; j < size_3; j++) {
            arr2[i][j] = val--;
        }
    }
    cout << "Elements in matrix 1: " << endl;
    for (int i = 0; i < size_3; i++) {
        for (int j = 0; j < size_3; j++) {
            cout << arr1[i][j] << " ";
        }
        cout << endl;
    }
    cout << endl;
    cout << "Elements in matrix 2: " << endl;
    for (int i = 0; i < size_3; i++) {
        for (int j = 0; j < size_3; j++) {
            cout << arr2[i][j] << " ";
        }
        cout << endl;
    }
    cout << endl;
    int** prod_arr = new int* [size_3];
    for (int i = 0; i < size_3; i++) {
        prod_arr[i] = new int[size_3];
    }
    for (int i = 0; i < size_3; i++) {
        for (int j = 0; j < size_3; j++) {
            prod_arr[i][j] = 0;
            for (int k = 0; k < size_3; k++) {
                prod_arr[i][j] += arr1[i][k] * arr2[k][j];
            }
        }
    }
    cout << "Elements in the product of 2 matrices: " << endl;
    for (int i = 0; i < size_3; i++) {
        for (int j = 0; j < size_3; j++) {
            cout << prod_arr[i][j] << " ";
        }
        cout << endl;
    }
}
However, I am gonna to use the function for the multiplication of the 2 matrices. how could I move it to function, since the first array is static array, the second array is dynamic array.
I have try different way to use pointer , pass-by reference in the function, but still can't work.
My invalid code as below.
#include <iostream>
using namespace std;
int** function(int farr1, int farr2, int size3) {
    int** prod_arr = new int* [size3];
    for (int i = 0; i < size3; i++) {
        prod_arr[i] = new int[size3];
    }
    for (int i = 0; i < size3; i++) {
        for (int j = 0; j < size3; j++) {
            prod_arr[i][j] = 0;
            for (int k = 0; k < size3; k++) {
                prod_arr[i][j] += farr1[i][k] * farr2[k][j];
            }
            return prod_arr[i][j];
        }
    }
}
int main()
{
    int size_3 = 3;
    //arr1 is a static array
    int arr1[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
    //arr2 is a dynamic array
    int** arr2 = new int* [size_3];
    for (int i = 0; i < size_3; i++) {
        arr2[i] = new int[size_3];
    }
    int val = 9;
    for (int i = 0; i < size_3; i++) {
        for (int j = 0; j < size_3; j++) {
            arr2[i][j] = val--;
        }
    }
    cout << "Elements in matrix 1: " << endl;
    for (int i = 0; i < size_3; i++) {
        for (int j = 0; j < size_3; j++) {
            cout << arr1[i][j] << " ";
        }
        cout << endl;
    }
    cout << endl;
    cout << "Elements in matrix 2: " << endl;
    for (int i = 0; i < size_3; i++) {
        for (int j = 0; j < size_3; j++) {
            cout << arr2[i][j] << " ";
        }
        cout << endl;
    }
    cout << endl;
    int** prod_arr = function(farr1, farr2, size_q3);
    cout << "Elements in the product of 2 matrices: " << endl;
    for (int i = 0; i < size_3; i++) {
        for (int j = 0; j < size_3; j++) {
            cout << prod_arr[i][j] << " ";
        }
        cout << endl;
    }
    cout << endl;
}
I want to use the function to execute the code. I got 2 array, one is static and another is dynamic, How to use pointer and pass to function with this different arrays.
Thanks a lot for your help.
 
    