![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
const в параметрах [D7]
махс © (2008-03-02 11:23:00)Загадка для меня. В каких случаях в процедуру или функцию передают значение константой;
Я понимаю, что это означает. Но вот когда именно это применяют не пойму. Бывает выжу чужой исходник, в функцию передают пять параметров - не один внутри функции не изменяют, а с констнтой идет только самый первый.
Поясните?
Спасибо.
Anatoly Podgoretsky (2008-03-02 14:28:00) [81]> {RASkov} (02.03.2008 14:20:06) [6]
Ссылки для интегер работают медленнее значений.
{RASkov} (2008-03-02 14:20:00) [82]> Потому что для Integer без разницы, как его передавать
Что-то я в замешательстве....
procedure M(const I: Integer);
и
procedure M1(I: Integer);
одинаковые что ли?
т.е. вызов М1 не "раздвоит" значение?? Что-то здесь не так..... а ведь "раздвоит", так как:
N:=5;
M1(N);
ShowMessage(IntTostr(N));
при:
procedure M1(I: Integer);
begin
....
I:=Random(I);
end;
Покажет(должно показать) - 5...
или я не верно понял [4],[5] :( ...т.е. не в контексте вопроса автора, а в целом.
Я так считал, что:
1 -function StrToIntDef(const S: string; Default: Integer): Integer;
2 -function StrToIntDef(const S: string; const Default: Integer): Integer;
вторая функция будет работать "быстрее" первой.... ибо не будет копироваться значение, а передастся ссылка....
Anatoly Podgoretsky (2008-03-02 13:34:00) [83]
> Бывает выжу чужой исходник, в функцию передают пять параметров
Где пять параметров.
А в приведеном коде без разницы, что const, что без.
Приводи примет, а то беспредметный разговор.
Игорь Шевченко (2008-03-02 13:33:00) [84]
>
> Почему бы тут не передать Default, как const?
Потому что для Integer без разницы, как его передавать, а для string разница есть. А раз без разницы, зачем лишние буквы набивать.
{RASkov} (2008-03-02 13:23:00) [85]> Почему бы тут не передать Default, как const?
Ну "забыли" борландовцы....
> Загадка для меня. В каких случаях в процедуру или функцию
> передают значение константой;
Тыж говоришь:
> Я понимаю, что это означает.
Откуда тогда такие вопросы?
Значит ты не понимаешь :(
В данном случае не смотри на чужой код с поспешными выводами, а разберись досканально - что и для чего...
махс (2008-03-02 13:08:00) [86]Ну вот пример из боландовских исходников:
function StrToIntDef(const S: string; Default: Integer): Integer;
var
E: Integer;
begin
Val(S, Result, E);
if E <> 0 then Result := Default;
end;
Почему бы тут не передать Default, как const?
Anatoly Podgoretsky (2008-03-02 11:30:00) [87]> махс (02.03.2008 11:23:00) [0]
А пример?