Не изменяется переменная, переданная в функцию в качестве параметра

 

Ув. Коллеги!

void SetInt(int Param) {

Param = 7;
return;
}

int start() {
int V = 4;
Print(V);
SetInt(V);
Print(V);

}

По моему - должно выводить сначала 4 потом 7

Но - по факту - установка значения 7 переменной V не происходит в SetInt(int Param). Почему?

Что я не так делаю?

Заранее благодарен за ответ

 
IgorKiev:

По моему - должно выводить сначала 4 потом 7

Но - по факту - установка значения 7 переменной V не происходит в SetInt(int Param). Почему?

Что я не так делаю?

Заранее благодарен за ответ

Тип void ничего не возвращает.

//---
int SetInt(int Param) {
   Param = 7;
   return(Param);
}
//---

либо

//---
void SetInt(int &Param) {
   Param = 7;
   return;
}
//---
 

А мне м не нужно, чтобы функция что-то возвращала.

Мне нужно, чтобы она первому параметру присваивала определенное значение. Или например нескольким параметрам определенные значения

void SetIntString(int ParamInt, string ParamString) {
   ParamInt = 7;
   ParamString = "ABCD";
   return;
} 
 
artmedia70:

Тип void ничего не возвращает.

либо


А вот вариант

void SetInt(int &Param) {
   Param = 7;
   return;
}

- то что нужно!

Выходит что дело в амперсанте.

Спасибо Вам, добрый человек.

П.С. а где это можно прочесть в документации?

 

И вот еще что....

Это работает только в функциях определенных в текущем модуле?

Проверял во внешних библиотеках - не работает. Так и должно быть или ошибся?

 
IgorKiev:

Ув. Коллеги!

void SetInt(int Param) {

Param = 7;
return;
}

int start() {
int V = 4;
Print(V);
SetInt(V);
Print(V);

}

По моему - должно выводить сначала 4 потом 7

Но - по факту - установка значения 7 переменной V не происходит в SetInt(int Param). Почему?

Что я не так делаю?

Заранее благодарен за ответ


Чтобы выполнилось то, что вы хотите нужно переменную Param объявить, как глобальную, т.е. вне функции SetInt() и вне функции start().
 
..., либо передать ее, как ссылку.
 
IgorKiev:


А вот вариант

- то что нужно!

Выходит что дело в амперсанте.

Спасибо Вам, добрый человек.

П.С. а где это можно прочесть в документации?

Поищите "Передача параметров по ссылке"
 
tara:
..., либо передать ее, как ссылку.
Этот вариант уже был предложен выше.
 

Существует возможность передавать параметры по ссылке. В этом случае модификация таких параметров отразится на соответствующих переменных в вызываемой функции, переданных по ссылке.

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

Вопрос снят. Хотя... ИМХО это некая "недоразвитость" языка mql4

 
khorosh:
Этот вариант уже был предложен выше.
Да, я медленно пишу буквы, но глобальную переменную передавать в функцию через список параметров не готов.
Причина обращения: