АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Преобразование типов

Читайте также:
  1. Анализ типов значений слова
  2. Антипов Юрий
  3. Боксеры различных типов тактики ведения боя и способы противодействия им. Отличительные особенности их манеры ведения боя.
  4. В блок-секционной схеме законченной единицей типового проектирования жилых зданий является блок-секция – повторяющаяся часть дома, сгруппированная вокруг лестнично-лифтового узла.
  5. В) создание схем из прототипов и их модификация
  6. Виды террора. Типовые характеристики террористических действий.
  7. Внутренняя структура объектов Maple. Подстановка и преобразование типов.
  8. Вопрос 24. Характеристики химической связи: длина, энергия, валентный угол. Длина и энергия одинарных и кратных связей. Краткое определение типов химических связей.
  9. Диагностика типов семейного воспитания
  10. Дискретно-косинусное преобразование
  11. Для всех типов кожи
  12. Известно, что форма двенадцатиперстной кишки человека характеризуется значительной типовой и индивидуальной изменчивостью.

РАБОТА С ДИНАМИЧЕСКОЙ ОБЛАСТЮ ПАМЯТИ. ССЫЛОЧНЫЙ ТИП ДАННЫХ

 

Цели:

§ Знакомство и работа с динамической областью памяти;

§ Работа с ссылочным переменными ссылочного типа(указателями).

 

Данные, хранящиеся в памяти ЭВМ представляют собой совокупность нулей и единиц (битов). Биты объединяются в последовательности: байты, слова и т.д. Каждому участку оперативной памяти, который может вместить один байт или слово, присваивается порядковый номер (адрес).

Для работы с адресами используется специальный тип данных – указатель. Указатели указывают на область памяти, в которой хранятся конкретные данные какого-либо базового типа. Различают указатели двух типов: типизированные и нетипизированные.

Типизированные указатели содержат адреса, по которым в памяти размещаются данные определенных типов.

TYPE Tpi=^integer; {указатель на данные целого типа}

VAR pi:Tpi;

P:^integer;

Нетипизированные указатели хранят просто адреса, которые не связаны с данными конкретных типов. Для их объявления используют зарезервированное слово pointer.

VAR p:pointer;

 

Для указателей, которые не хранят никаких адресов, введена константа «нулевой адрес», которая принимает значение nil. Значение nil можно присваивать указателю любого типа.

 

Получение адреса (@)

Результат операции – указатель типа pointer, который можно присвоить любому указателю, как типизированному так и нетипизированному.

VAR i:integer;

P:^integer;…

P:=@i; {указатель Р будет содержать

адрес переменной i}

 

Чтобы получить доступ к переменной по указателю, необходимо после типизированного указателя поставить знак «^». Полученное значение имеет тип, совпадающий с базовым типом указателя.

 

Нетипизированные указатели разыменовывать нельзя!

 

Пример 1

Пример взятия данных по адресу.

VAR I:real;

Uk:^real; {указатель на данные вещественного типа}

Begin

I:=0.25;

Uk:=@i; {указательUk будет содержать адрес переменой I}

Writeln (Uk^); {извлечение данных, расположенных по адресу Uk}

Uk^:=Uk^+2;

Writeln (Uk^); { 2.25}

End.

Преобразование типов

Типизированный указатель адресует вполне определенную область памяти определенной длины, соответствующей базовому типу. Если указателям разного типа присвоить один и тот же адрес, то каждый из них будет рассматривать содержимое области памяти в соответствии с внутренним представлением своего типа. Эта особенность указателей позволяет использовать их для неявного преобразования типа.

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

Пример 2

uses CRT;

var i:integer; ch:char;

p:^integer; r:^real; c:^char;

begin

i:=12;

p:=@i; r:=@i; c:=@i;

writeln(p^);

writeln(r^);

writeln(C^);

ch:='A';

p:=@ch;

writeln(p^);

End.

Пример 3

type mas=array[1..4]of byte;

Var l:real; k:byte;

p1:^mas;

Begin

l:=123456789;

p1:=@l;

for k:=1 to 4 do

write(p1^[k]); {0,0,0,8,4}

end.

 


1 | 2 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)