ВНИМАНИЕ! Конкурс по программированию!
Проект Programmers.kz и школа hotPen3D2D предлагает Вам курсы по веб-дизайну, веб-программированию и компьютерной графике. Подробности здесь.
- Просмотров: 1318
- Автор: КазКиберГетик
Приведение типов
Категория: Программирование » Pascal / Turbo Pascal » Уроки Pascal
Приведение типов:
как и зачем обманывать компилятор
Приведение типов,
или как обманывать компилятор
Как известно, переменная имеет идентификатор, тип и размер. Естественно, что переменные различных типов могут иметь одинаковый размер (к примеру Integer и Word; размеры переменных можно посмотреть здесь), но обрабатываться различными способами. В таком случае возможно переменную одного типа рассматривать (и обрабатывать) как переменную другого типа. Для этого пользуются приведением типов. Формально приведение описывается так
<новый_тип>(переменная)
Следует отметить, что фактически переменная типа не меняет, а только в данном случае рассматривается компилятором как переменная другого типа, то есть во время компиляции генерируется код, обрабатывающий область памяти, в которой расположена переменная, по правилам обработки <нового_типа>. Наиболее широко приведение типов используется при работе с указателями, особенно нетипизированными: любая область памяти может быть приведена к любому из известных типов. Кроме того, по той причине, что любой указатель занимает в памяти 4 байта, приведение указателя одного типа к указателю другого типа возможно всегда. В этом случае (для типизированных указателей) область памяти, на которую ссылается указатель, рассматривается с точки зрения <нового_типа> указателя.
Применение,
или зачем обманывать?
Действительно, обманывать нехорошо. Однако, в программировании, как, впрочем, и в реальной жизни, легким обманом можно сделать более эффективными некоторые процессы. Приведем пример. Допустим, что мы проанализировали код, создаваемый компилятором, при выполнении процедуры Delete, и он нам не понравился с точки зрения эффективности. Или мы пишем процедуру, удаляющую из строки все символы с определенным значением, как, например, здесь. В обоих случаях, длина строки изменится, и для того, чтобы проинформировать об этом, необходимо изменить нулевой байт строки. Можно сделать это стандартно и без обмана
однако это потребует и дополнительной памяти, и дополнительных временных затрат. Куда проще и эффективнее
По-моему так.
Такая же ситуация может возникнуть, скажем, когда одни и те же данные нужно рассматривать как знаковые, и, временами, как беззнаковые. Более тонкое использование приведения типов (указателей) необходимо при обеспечении правильного (или наоборот, неправильного, когда это надо) вызова виртуальных функций в объектно-ориентированных программах.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.




