WinterTime
WinterTime

Reputation: 183

Pointer of Two dimensional array to function c++

Im kind of begginer in C++, just to programming in PHP and JAVA, I have problem to make a pointer to 2d array, then use this pointer in different function and cout values of [0] and [1].

There is part of my script.

    int size_dd = 5;
    int dd[size_dd][2];

    for (int i = 0; i < size_dd; i ++)
    {
        dd[i][0] = 2 * i + 10;
        dd[i][1] = 4 * i + 20;
    }

I can read the dd[i][0] in main function but I cannot call them in function read(int* twodarray), as it returns int[int] and the 2nd parameter from array is lost.

Thing is that I need to make pointer to this array and call it in other function.

But the problem is when I handle *dd in to the function, it return that dd is int[int] value instead of int[int][int], how can I resolve it?

Upvotes: 0

Views: 372

Answers (1)

marcinj
marcinj

Reputation: 49976

Your function should have following signature:

void fooByPtr(int(*arr)[5][6]) {
  (*arr)[4][4] = 156;
}

// Call ex:
int dd[5][6];
fooByPtr(&dd);

You can also do it with reference and template:

void fooByRef(int (&arr)[5][6]) {
  arr[4][4] = 156;
}

template<int N, int M>
void fooByRefTempl(int(&arr)[N][M]) {
  arr[4][4] = 156;
}

Some other comments to your code (also the one from comment):

You can create arrays using constant values as sizes, so this is wrong:

    int size_dd = 5;

and should be:

    const int size_dd = 5;

in your fun_call you should dereference your array: (*dwu_wymiar) before indexing it.

finally, change funCall(int(*dwu_wymiar)[][2], to int(*dwu_wymiar)[5][2], as in my example above.

Upvotes: 1

Related Questions