double Buffer[4][]; int init(){ for( int i=0;i<4;i++){ SetIndexBuffer( i, Buffer[i+1] ); // или SetIndexBuffer( i, Buffer[i+1] []); ????? } return(0); } int start() { int limit; int counted_bars=IndicatorCounted(); if (counted_bars<0) return (-1); if (counted_bars>0) counted_bars--; limit=(Bars-counted_bars)-1; //---- indicator calculation for(int i=limit; i>=0; i--){ for(int k = 1; k<=4; k++) { Buffer[k][i]= ................... ; } } //---- return(0); }
только все равно не работает :((((
Так неправильно. Используйте точный и правильный способ работы с массивами без всяких хакерских штучек.
я пробовал и SetIndexBuffer( i, Buffer[i+1][] ); - если это адекватно С, то это должно быть тоже самое, что и bufer[] для одномерного массива. или я ошибаюсь ? если не сложно подскажите пожалуйста....
Потому что использование "подразумеваемого" адресного доступа в защищенном языке (MQL 4 есть С без адресной арифметики) и есть "хакерская штучка".
есть функция и массивы:
int funk( double aray[]); double d_array1[]; double d_array2[]; double d_array3[]; double d_array4[]; int init() { funk(d_array1); funk(d_array2); funk(d_array3); funk(d_array4); return(0); }
- так получается правильно - и все работает, но если выводить, например все 8 линий, то хотелось бы использовать цикл, а не копировать 8 раз. В экспертах эта цифра может быть многократно больше и как тогда там ?
int funk( double aray[]); double dd_array[8][];// по аналогии с одномерным массивом описываем 2-мерный из 8-ми строк int init(){ for(int i= 0; i<8;i++){ funk(dd_array[i]); } return(0); }
казалось бы логично - здесь используется имя строки в качестве имени одномерного массива ( и по стандарту C, С++ так), но компилер не пропускает, а пропускает так :
int funk( double aray[]); double dd_array[8][]; int init(){ for(int i= 0; i<8;i++){ funk(dd_array[i][]); } return(0); }
и не логично и не работает.
Собственно вопрос - если в качестве параметра в функцию передается одномерный массив (копированием или по ссылке), то можно ли туда (в эту функцию) в качестве параметра передать строку двух (или более мерного) массива и как это правильно сделать. Или можно передать только одномерный массив и все ?
С уважением, Владислав.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Собственно в чем вопрос: "Будут ли эквивалентными следующие куски кода ?"
этот
так работает :)
и такой
это не работает :(
и если не будут, то как правильно ?
И вообще есть ли возможность работать с многомерными массивами так как это организовано в Си, С++ ?
Спасибо...