чего то не хватает - страница 2

 
VladislavVG:


  Поясните в чем разница и заодно что такое символьный массив в МКЛ ? ;)

https://book.mql4.com/ru/basics/types

ЗЫ если для Вас это новость, поскажу в МКЛ нет такого типа ;).... Так что там с массивами ?  



Я вам и не говорил что он есть.

Я пояснил ваше заблуждение:

Чтобы существовал элемент с номером 2 размерность массива должна быть не менее 3-х. 

 

а это тогда что ниже ? ! но хотелось бы вытащить без глобальных


double t1=1;
double t2=1;

int start()
{
double myMap1 [2];
myMap1 [0]=t1;
myMap1 [1]=t2;

myMap1 [2] = My_function( );
Alert (t1); Alert (t2);

return(0);
}

double My_function()
{ t1 =10;
t2 =20;
double myMap2 [2];
myMap2 [0]=t1; Alert (t1) ;
myMap2 [1]=t2; Alert (t2) ;

return (myMap2[2]);}

 
Vinin:
Как я понял. Товарищ хочет всем элементам массива присвоить значения


Вернуть весь массив оператором return невозможно? 

 
Ololo:

int array[2];

Я могу обращаться к элементу с индексом 2 хоть 1000...........................N раз. 

 

char array[2];

А тут последним должен быть символ конца строки(\0).

Правда, возможно в mql4 такого правила нет, поэтому и тут я спокойно обращусь к array[2] =) 

 

 


Не можете: в большинстве реализаций вызовет падение программы. Перечитайте справку и, если для Вас новость, свойства массива от типа элементов не зависит. В С (в паскале, кстати не так ;) ) массив чар от строки отличается интерпретацией и наличием символа конца строки и, если Вы сами не позаботитесь о распознавании символа конца строки, то получите проблему (читайте руководства по С). Чтобы не было проблем под этот символ нужно выделять память. То есть строку из 2-х символов можно хранит в массиве типа чар, но размерности на единицу больше.

Удачи. 

 
Ololo:


Я вам и не говорил что он есть.

Я пояснил ваше заблуждение:

Чтобы существовал элемент с номером 2 размерность массива должна быть не менее 3-х. 

 

Это не заблуждение. Выше объяснил почему - повторю еще раз: ДЛЯ СИМВОЛА КОНЦА СТРОКИ НУЖНО ОТВОДИТЬ ПАМЯТЬ или работать с этим массивом не как со строкой (то есть не до символа конца строки) а как с обычным символьным массивом - не путайте работу менеджера памяти со стандартами языка. 

Кстати, такое впечатление, что опыта работы на С (не на С++, а именно на С ) у Вас нет. Иначе Вы вряд ли путались бы с адресной арифметикой ;). Правда в МКЛ это не нужно.

Удачи. 

 

То есть строку из 2-х символов можно хранит в массиве типа чар, но размерности на единицу больше.

Браво. В языках высокого урвоня так и есть.

Поэтому и говорю, что путаете символьный с любым другим.

И никогда у меня обращение к элементу 2 в массиве типа array[2] ошибки не давало. Одумайтесь 

 
Ololo:


Вернуть весь массив оператором return невозможно?


Вернуть нельзя, но можно передать по ссылке
 
Ololo:

То есть строку из 2-х символов можно хранит в массиве типа чар, но размерности на единицу больше.

Браво. В языках высокого урвоня так и есть.

Поэтому и говорю, что путаете символьный с любым другим.

И никогда у меня обращение к элементу 2 в массиве типа array[2] ошибки не давало. Одумайтесь 

 

 

 

Это на МКЛ не дает ошибки поскольку здесь свой менеджер памяти (это понятно что такое ? ). Попробуйте на С - посмотрим на результат. Кстати компилятор в большинстве случаев ошибку не выдает. Ошибки могут возникнуть на этапе расчетов, поскольку сохранение значений по адресу не гарантировано, например, при выделении памяти под другой массив.

ЗЫ и это Вы одумайтесь - так программировать нельзя: это потенциальный источник очень трудно вылавливаемых ошибок. Читайте руководства по С - разработчики не раз говорили, что МКЛ построен на принципах С и в непонятных случаях рекомендовали обращаться к его стандартам.

 
VladislavVG:
Это на МКЛ не дает ошибки поскольку здесь свой менеджер памяти (это понятно что такое ? ). Попробуйте на С - посмотрим на результат. Кстати компилятор в большинстве случаев ошибку не выдает. Ошибки могут возникнуть на этапе расчетов, поскольку сохранение значений по адресу не гарантировано, например, при выделении памяти под другой массив.


Попробуйте на С - посмотрим на результат.

И снова аплодисменты.

Речь то была о mql4 была, тут никакой ошибки это не вызывает, зачем вы человеку начали что-то о С разъяснять. 

Vinin привел код, везде там 2, и все работает.

 

Считаю спор можно закончить.

Чтобы существовал элемент с номером 2 размерность массива должна быть не менее 3-х.

Относительно mql4 - полнейший бред. 

Причина обращения: