int masInt[3][5]
- вот такие массивы c фиксированными размерами на самом деле хранятся одним куском и индексацию компилятор вычисляет сам. Это не
int**
, а
int[][5]
. Только этот тип нельзя вернуть из функции.
Что бы вернуть именно указатель на указатель, вам надо его так и завести и не забыть выделить по строкам:
int** masInt = new int* [3];
for (int i = 0; i < 3; ++i) {
masInt[i] = new int[5];
}
Не забудьте только потом удалить все это добро через delete[]:
for (int i = 0; i < 3; ++i) {
delete[] array[i];
}
delete[] array;
Но вообще, лучше не парить себе мозги и возвращать
std::vector<std::array<int,5>>
.