Вопрос по передаче массивов в функцию?

 

Хочу написать функцию печати размерности массива.

void OnStart()

  {
   int mas1[];
   int mas2[][2];
  
  
   func( mas1 );
   func( mas2 );
 
  }
//+------------------------------------------------------------------+
 void func( int &arr[] )
     {
       Alert( ArrayDimension( arr )  );    
     }   


выдает ошибку: 'mas2' - invalid array access    Проверка 1.mq4    72    10

Вопрос можно ли в функцию одновременно передавать одномерные и многомерные массивы. Не могу понять?

 

Конечно можно. А что помешало проверить?

У тебя ошибка возникает из-за размерности массивов, mas2 двухмерный массив, а на входе в функцию одномерный.

 
А как, не могу понять. Если можете тоже простой код как сделать, или в моем укажите что не так сделал. Заранее спасибо.
 
void OnStart()
  {
   int mas1[];
   int mas2[][2];
  
  
   func(mas1, mas2);
 
  }
//+------------------------------------------------------------------+
 void func( int &arr[], int &arr2[][])
     {
       Alert( ArrayDimension( arr )  );    
     }    

Код вставляй через кнопку SRC на панельке выше окна ввода.

 
Понял что ругается на разные размерности. Но как сделать функцию которая будет получать массив любого размера и печатает его размерность? Никак не въеду. То есть надо писать только разные функции для разных размерностей, так что ли?
 

Может перегруженной функцией.

По сути будут разные функции, но вызываться будут одинаково.

 

Спасибо. То есть я правильно понял, что размерность многомерного массива нужно указывать явно при передаче в функцию.

Я хотел сделать вот так изначально:

void OnStart()
  {
   int mas1[2]; 
   int mas2[][2];
   
   
   func( mas1 );
   func( mas2 );
  
  }
//+------------------------------------------------------------------+
 void func( int &arr[] )//здесь хотел указать что передаю массив(любой размер). То есть подаю массив разной размерности а в зависимости от размерности по разнму растягиваем.
     {
       if( ArrayDimension( arr )==1  )//а здесь в зависимости от размерности растягивать
         {
           ArrayResize( arr,2 );
         }
       if( ArrayDimension( arr)>1 )// и здесь по разному
         { 
          ArrayResize( arr,ArraySize( arr)+1);
         }        
     }  

Так не получится.

 
Не совсем так. Перегрузка это из ООП. Здесь почитай.
 
Спасибо за помощь.
Причина обращения: