![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() |
compiler |
![]() ![]()
Сообщение
#1
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
Добрый день!
В целях оптимизации моей программы я решил передавать процедурам не матрицу, а указатель на нее... Но у меня это никак не получается... type как ни странно, поиском ничего не нашел... может плохо искал? заранее благодарен. -------------------- Спасибо!
Удачи! |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Ты не сможешь сконструировать указатель "на лету", потому что в процедуру у тебя передается Var-параметр, то есть - это должна быть переменная...
var Добавлено через 3 мин. P.S. В чем заключается "оптимизированность" такого варианта по сравнению, скажем, с передачей: procedure pr(var ar: Arr); можно узнать? |
compiler |
![]()
Сообщение
#3
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
Ты не сможешь сконструировать указатель "на лету", потому что в процедуру у тебя передается Var-параметр, то есть - это должна быть переменная... спасибо... а как можна передавать еще? const?.. В чем заключается "оптимизированность" такого варианта ... насколько я понимаю, при передаче такой передаче происходит копирование всего массива, а при передаче указателя мы продолжаем работать с тем же массивом и с теме же ячейками памяти, или не так?-------------------- Спасибо!
Удачи! |
Client |
![]()
Сообщение
#4
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
procedure pr(var ar: Arr);А так не тот же массив передастся? Ведь исользуется как VAR-параметр, т.е. сам массив |
compiler |
![]()
Сообщение
#5
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
procedure pr(var ar: Arr);А так не тот же массив передастся? Ведь исользуется как VAR-параметр, т.е. сам массив procedure pr(var ar:PT)недолжен(?). PT это ж указатель... и передаваться будет указатель, который может быть намного меньше массива... -------------------- Спасибо!
Удачи! |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Цитата А так не тот же массив передастся? Ведь исользуется как VAR-параметр, т.е. сам массив ![]() procedure pr(ar: Arr);При передаче через procedure pr(var ar: Arr);передается ссылка на массив, то есть, сам массив в стек не копируется... |
compiler |
![]()
Сообщение
#7
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
volvo, спасибо..
зы то есть оптимизация нулевая? -------------------- Спасибо!
Удачи! |
Client |
![]()
Сообщение
#8
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
Знаю, что не в тему, но хочется полностью разобраться
Цитата Сам массив (по значению) передается так: Чуть не так сказал...Да передается ссылка на массив procedure pr(var ar: Arr);если мы изменим в процедуре, то он измениться и основной программе (массив) procedure pr(const ar: Arr);а здесь? ведь передается тоже ссылка на массив, но он не изменится в основной при изменении в процедуре? |
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
Цитата а здесь? Не путай константную ссылку и просто ссылку... Здесь компилятор запрещает менять значения ar напрямую (обойти этот запрет можно, но это уже другая тема), и при попытке изменения выдает ошибку, т.е., значения ar доступны как бы "read-only"...Сообщение отредактировано: volvo - 11.01.2008 22:11 |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 21:30 |