简体   繁体   中英

Reference to two dimensional arrays c++

in my project i have chosen to use arrays (not dynamic). I would like to know how to relate to a two-dimensional array made in one function in another one.

Do i have to make an array in the main function and refer (and then modify in other functions) or do I do it in other way? If yes, then i would be really grateful for someone to show me, I have been searching and trying in many ways and I still have errors. Have a great day, Wiktoria

There is a special syntax to pass C-Style arrays to functions.

Please see the below code

constexpr size_t NumberOfRows = 3;
constexpr size_t NumberOfColumns = 4;

// Typedef for easier usage
using IntMatrix2d = int[NumberOfRows][NumberOfColumns];

//Solution 1 ------
// Pass by reference
void function1(int(&matrix)[NumberOfRows][NumberOfColumns])  {}

// Pass by pointer
void function2(int(*m)[NumberOfRows][NumberOfColumns])  {}

//Solution 2 ------
// Pass by reference
void function3(IntMatrix2d& matrix) {}

// Pass by pointer 
void function4(IntMatrix2d* matrix) {}


int main()
{
    // Solution 1
    // Handwritten matrix. Dimension is compile time constant
    int matrix1[NumberOfRows][NumberOfColumns];

    // Pass by reference
    function1(matrix1);

    // Pass by pointer
    function2(&matrix1);

    // Solution 2 -----
    IntMatrix2d matrix2;

    // Pass by reference
    function3(matrix2);

    // Pass by pointer
    function4(&matrix2);

    return 0;
}

But basically you should use std::array instead-

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM