Как объявить многомерный массив в параметре функции в С++?

#include<iostream>
using namespace std;

void DinArr(int arr[][],const int stb, const int str) {
    for (int i = str; i > 0; i--) {
        for (int o = stb; o > 0; o--) {
            cout << arr[stb][str];
        }
    }
}

int main() {
    setlocale(LC_ALL, "ru");
    const int str = 3;
    const int stb = 3;
    int arr[str][stb];
}

Ответы (1 шт):

Автор решения: AlexGlebe

Двумерных массивов плавающего размера не бывает. По этому аргументы размеров можно убрать. Типы массивов разные, при отличие в размерности это уже другой тип. Можете объявить свой тип для удобства.

const int str = 3;
const int stb = 3;
typedef int tarr[str][stb];

Массивы передаются по указателю или по ссылке.

void DinArr(tarr const & arr) {

Результат :

// g++ -Wall -Wextra -Wpedantic -c -std=c++11 arrarg2.cpp
#include<iostream>
using namespace std;

const int str = 3;
const int stb = 3;
typedef int tarr[str][stb];

void DinArr(tarr const & arr) {
    for (int i = str; i > 0; i--) {
        for (int o = stb; o > 0; o--) {
            cout << arr[i][o];
        }
    }
}

int main() {
    setlocale(LC_ALL, "ru");
  tarr  arr ;
  DinArr ( arr ) ;
}
→ Ссылка