Вместо массива нельзя ставить 0. Но никто не запрещает передачу пустого массива. Внутри функции в любом случае будет проверяться размер массива. Если размер нулевой, то что можно рассчитать? Так что проблемы нет.
void MyFunc(int &array[]) { int nSum = 0; for (int i = ArraySize(array) - 1; i >= 0; --i) nSum += array[i]; }
Если же речь о простых типах данных, то им можно задать значения по умолчанию. Тогда такие аргументы можно вообще не указывать при вызове функции:
void MyFunc(int nA = 1, int nB = 2, int nC = 3) { ... } Вызов: MyFunc(10); // nA = 10, nB = 2, nC = 3 MyFunc(20, 30); // nA = 20, nB = 30, nC = 3
Вместо массива нельзя ставить 0. Но никто не запрещает передачу пустого массива. Внутри функции в любом случае будет проверяться размер массива. Если размер нулевой, то что можно рассчитать? Так что проблемы нет.
Если же речь о простых типах данных, то им можно задать значения по умолчанию. Тогда такие аргументы можно вообще не указывать при вызове функции:
Я так и сделал создал подставные массивы но о пропуске простых аргументов я не знал. Tсли пропущен простой аргумент как проверить что его нет он будет равен 0 или чему? И кстати функция
ArraySize(array)
в пользовательских функциях у меня не работает я использую функцию
ArrayRange()
она работает нормально.
Я так и сделал создал подставные массивы но о пропуске простых аргументов я не знал. Tсли пропущен простой аргумент как проверить что его нет он будет равен 0 или чему?
Он будет равен значению, указанному по умолчанию.
И кстати функция
в пользовательских функциях у меня не работает я использую функцию
она работает нормально.
В каком смысле "не работает"?
ArrayRange возвращает количество элементов в указанном измерении массива, а ArraySize - общее количество элементов в массиве:
datetime array[10][20]; Alert("Size: ", ArraySize(array), ", Range: ", ArrayRange(array, 0)); // Size: 200, Range: 10
Он будет равен значению, указанному по умолчанию.
В каком смысле "не работает"?
ArrayRange возвращает количество элементов в указанном измерении массива, а ArraySize - общее количество элементов в массиве:
У меня если вызвать функцию ArraySize в пользовательской функции написанных самостоятельно возвращает всегда 0. Поэтому я использую ArrayRange(array, 0)); вот такие записи.
У меня если вызвать функцию ArraySize в пользовательской функции написанных самостоятельно возвращает всегда 0. Поэтому я использую ArrayRange(array, 0)); вот такие записи.
Да не может быть, разве только всегда и передаете в функцию массив размером 0.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Предположим есть пользовательская функция
void Funcziya(int &Mas[], int &Mass[][],int q,int e ) предположим что я не хочу указывать один из её аргументов и в этом случае будут использоваться настройки по умолчанию. Например мне не обязательно обрабатывать этот массив int &Mas[], который является аргументом функции, я хочу оставить пробел т.е. аргумент будет пустой или вписать туда 0, благодаря настройкам по умолчанию машина проверит что аргумент функции пропущен или указано пустое значение или 0 и в этом случае рассчитываться этот аргумент внутри функции не будет потому что он не указан т.к. не обязателен в расчётах, а если будет указан то будет рассчитан. Каким образом можно пропустить аргумент функции, или указать на то, что он пропущен и как провести такую проверку на то, что данный аргумент пропущен чтобы программа не брала его в учёт?