Как загрузить данные в масив?

 
Если например из эксперта вызывается некоторая ф-ия, ей передается некоторое количество параметров (например 4), например таких (1,3,10,155). Внутри ф-ии эти параметры записываются в переменные (например a,b,c,d). Каким образом эти переменные можно записать в масив? Пробовал так int Masiv[4]={a,b,c,d}; не получилось.
void Funk(int a, int b, int c, int d)
  {
   int Masiv[4];
  }
   
int start()
  {
   Funk(1,3,10,155);
   return(0);
  }
И второй вопрос, в документации есть описание как работать с масивами? Я нашел только Операции с масивами, и краткое упоминание здесь и здесь.
 
Masiv[0] = a;
Masiv[1] = b;
...
 
Понял, вопрос был немного глупый :) Значит все сразу нельзя, спасибо!
 
Ответ тоже был не очень умным =)))
По идее, так тоже должно работать:
int Masiv[] = { a, b, c, d };
 

Я тоже думал что должно работать, попробовал, с цифрами получается, а с буквами оказывается нельзя. Нужно по одной загружать. Хорошо что мне нужно 4 значения загрузить, а не 444 :)

 
Наверное, правильнее всего было бы сделать параметром функции массив, и передавать в неё не отдельные числа, а готовый (заполненный) массив чисел ;)
 
Тут фишка в чем.
int Masiv[] = { 1, 2, 3, 4 };


При такой записи выделение памяти и инициализация массива происходят на этапе компиляции.
Значения переменных известны лишь на этапе выполнения, потому компилятор и ругается.

 
Функцию которую я написал приходится вызывать из эксперта 7-8 раз с разными параметрами. Так что если сделать параметром ф-ии масив, то мне пришлось бы в эксперте объявить 7-8 разных масивов. Думаю что в моем случае все таки удобнее загружать данные в масив именно внутри ф-ии. Хотя если объявив внутри эксперта несколько масивов в общем скорость работы программы увеличится, то я бы именно так и сделал. Но на счет того как быстрее будут ити вычисления я не знаю.

Что касается тонкостей о том когда выделяется память, то мне до этого далеко, наверно не все сразу :)

А ф-ию я все таки дописал, проверил, работает так как я и хотел. Если кому то интересно то могу выложить. Вся критика и замечания принимаются :)

// +---------------------------------------------------------------------------+
// | Ф-ия OrderScan                                                            |
// | Ищет и выберает последний ордер среди указанных типов торговых операций.  |
// | Возвращает тип торговой операции выбранного ордера. Поиск производит      |
// | среди 'закрытых и удаленных ордеров' или 'открытых и отложенных', в       |
// | зависимости от входных параметров. Если ордер соответствующего типа не    |
// | найден - ф-ия возвращает значение "-1", при этом выбран будет последний   |
// | ордер в сответствующем списке. Если ф-ии был передан неправильный входной |
// | параметр pool, или небыло передано ни одного значения type, она           |
// | возвращает "-2".                                                          |
// |                                                                           |
// |  int OrderScan(string pool, int type1, int tyte2, int type3, ...)         |
// |                                                                           |
// | Параметры:                                                                |
// | pool - Источник данных для выбора. Mожет быть одной из следующих величин: |
// |        "MODE_TRADES" -  ордер выбирается среди открытых и отложенных      |
// |                         ордеров.                                          |
// |        "MODE_HISTORY" - ордер выбирается среди закрытых и удаленных       |
// |                         ордеров.                                          |
// | type - Тип торговых операций, которые нужно искать, указывается через     |
// |        запятую, не более 6, но не мение одного. Mожет быть одной из       |
// |        следующих величин:                                                 |
// |        https://docs.mql4.com/ru/constants/trading                          |
// |        0 - (OP_BUY) Покупка                                               |
// |        1 - (OP_SELL) Продажа                                              |
// |        2 - (OP_BUYLIMIT) Отложенный ордер BUY LIMIT                       |
// |        3 - (OP_SELLLIMIT) Отложенный ордер SELL LIMIT                     |
// |        4 - (OP_BUYSTOP) Отложенный ордер BUY STOP                         |
// |        5 - (OP_SELLSTOP) Отложенный ордер SELL STOP                       |
// |                                                                           |
// +---------------------------------------------------------------------------+
int OrderScan(string area, int a=-1, int b=-1, int c=-1, int d=-1, int e=-1, int f=-1)
  {
   int n;
   int total=-1;
   int masiv[4];
   masiv[0]=a; masiv[1]=b; masiv[2]=c; masiv[3]=d; masiv[4]=e; masiv[5]=f; 
   if(area=="MODE_TRADES") {total=OrdersTotal(); n=1;}
   if(area=="MODE_HISTORY") {total=HistoryTotal(); n=2;}
   if(total==-1) {Print("Ф-ии OrderScan был передан неправильный параметр pool"); return(-2);}
   if(masiv[0]==-1) {Print("Ф-ии OrderScan небыло передано ни одного параметра type"); return(-2);}
   for(int i=1; i<=total; i++)  // Перебираем все ордера
     {
      switch(n)
        {
         case 1: OrderSelect(total-i,SELECT_BY_POS,MODE_TRADES); break;
         case 2: OrderSelect(total-i,SELECT_BY_POS,MODE_HISTORY); break;
        }
      for(int m=0; m<=5; m++)
        {
         if(OrderType()==masiv[m])
           {
            return(masiv[m]);
           }
        }
     }
   return(-1);
  }
 

Экспериментально выявил как передавать в ф-ию сразу готовый масив, получилось :)

void Funk(int Masiv[])
  {
   Print("Третий элемент масива - ",Masiv[2]);
  }
   
int start()
  {
   int bbb[4]={2,4,6,8};
   Funk(bbb);
   return(0);
  }
 
Не могу записать данные в масив, что не правильно?
int Masiv[];
int i, j;
bool m=true;
 
int start()
  {
   while(m)
     {
      Masiv[i]=j;
      i++;
      j=j+2;
      Print(i-1,"-й элемент масива - ",Masiv[i-1]);
      if(j>=20) break;
     }
   m=false;
   return(0);
  }
 
int Masiv[10];
 
int start()
  {
   for ( int i = 0; i < 10; i ++ )
     {
      Masiv[i]=i * 2;
      Print(i,"-й элемент масива - ",Masiv[i]);
     }
   return(0);
  }
Причина обращения: