Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Язык MQL5 поддерживает технологию OpenCL. Попробуй сам!
Андрей
44
Андрей 2011.12.01 10:11 

Доброе время суток! У меня возник вопрос по поводу инициализации массивов. В учебнике написано, что: Массив может быть инициализирован только константами соответствующего типа. Одномерные и многомерные массивы инициализируются одномерной последовательностью констант, перечисленных через запятую. Последовательность обрамляется фигурными скобками. В данном случае меня смущает слово "константа". Разве определенному индексу массива не может быть присвоено значение через переменную.Если может. тогда вот какой вопрос. некая функция должна передавать по ссылке два массива данных, например:

void SomeFunction(int& firstmassive[][3],double& secondmassive[][3])

{

 int iCount=-1,

      ifirst,isecond,ithird;

 double dfirst,dsecond,dthird;

...

 iCount++;

  firstmassive[iCount][0]=ifirst;firstmassive[iCount][1]=isecond;firstmassive[iCount][2]=ithird;

  secondassive[iCount][0]=dfirst;secondmassive[iCount][1]=dsecond;secondmassive[iCount][2]=dthird;

  print("iCount= "+iCount+" firstmassive_2= "+firstmassive[iCount][1]+" isecond= "+isecond);

...

return(0);

}

Когда я выпускаю данную функцию в работу, то в закладке "эксперты" в терменале сообщения такого рода, например:

iCount= 0 firstmassive_2= 0 isecond= =15
iCount= 1 firstmassive_2= 0 isecond= =25
Получается, что массиву не передается значение переменной, хотя последняя значение имеет. Что я сделал не так?
PapaYozh
3768
PapaYozh 2011.12.01 10:24  
kifa911:
Получается, что массиву не передается значение переменной, хотя последняя значение имеет. Что я сделал не так?


Покажите кусок программы, где описаны передаваемые в функцию массивы.

И кусок, где производится вызов функции.

Андрей
44
Андрей 2011.12.01 10:29  
PapaYozh:


Покажите кусок программы, где описаны передаваемые в функцию массивы.

И кусок, где производится вызов функции.


double dTriangle[][3];
int    iTriangle[][3];

Они описаны до функции Start()

int Start()
{
 SomeFunction(iTriangle,dTriangle);
}
Victor Nikolaev
Модератор
14061
Victor Nikolaev 2011.12.01 10:31  
Не определены размеры массивов, да и в функции есть ошибка
Андрей
44
Андрей 2011.12.01 10:33  
Vinin:
Не определены размеры массивов, да и в функции есть ошибка

Первое измерение обязательно определять, даже если я не знаю какой будет размер?

И какая ошибка в функции? Если можете подскажите пожалуйста.

Victor Nikolaev
Модератор
14061
Victor Nikolaev 2011.12.01 10:58  
kifa911:

Первое измерение обязательно определять, даже если я не знаю какой будет размер?

И какая ошибка в функции? Если можете подскажите пожалуйста.


Должен же кто-то знать размер массива, а ошибка- выход за пределы диапазона

Есть ряд функций для работы с массивами https://docs.mql4.com/ru/array

И ошибки можно посмотреть https://docs.mql4.com/ru/constants/errors

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий