Wednesday, 28 September 2016

Passing a 2D array to a C++ function



I have a function which I want to take, as a parameter, a 2D array of variable size.



So far I have this:



void myFunction(double** myArray){

myArray[x][y] = 5;
etc...
}


And I have declared an array elsewhere in my code:



double anArray[10][10];



However, calling myFunction(anArray) gives me an error.



I do not want to copy the array when I pass it in. Any changes made in myFunction should alter the state of anArray. If I understand correctly, I only want to pass in as an argument a pointer to a 2D array. The function needs to accept arrays of different sizes also. So for example, [10][10] and [5][5]. How can I do this?


Answer



There are three ways to pass a 2D array to a function:




  1. The parameter is a 2D array



    int array[10][10];

    void passFunc(int a[][10])
    {
    // ...
    }
    passFunc(array);

  2. The parameter is an array containing pointers



    int *array[10];
    for(int i = 0; i < 10; i++)

    array[i] = new int[10];
    void passFunc(int *a[10]) //Array containing pointers
    {
    // ...
    }
    passFunc(array);

  3. The parameter is a pointer to a pointer



    int **array;

    array = new int *[10];
    for(int i = 0; i <10; i++)
    array[i] = new int[10];
    void passFunc(int **a)
    {
    // ...
    }
    passFunc(array);



No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...