Нұқауыштар Компьютердің оперативті жадысы - бұл әрбіреуі бір байт ақпаратты сақтауға арналған және әрбіреуі оған сол арқылы қатынас жасауға болатын жеке адреске ие ұяшықтар жиыны. Ал нұсқауыш - бұл программаның сипаттау бөлімінде жарияланған, мәні жадының бір байтының адресі болып табылатын айнымалы.
Turbo Pascal-да қолданылатын нұсқауыштар типтендірілген және типтендірілмеген болып бөлінеді. Егер екінші нұсқауыш – ол кез-келген типті мәліметтер адресінен тұратын айнымалы болса, онда бірінші нұсқауыш - осы нұсқауышты жариялау кезінде көрсетілген типті мәлімет адресінен тұрады. Типтендірілмеген нұсқауыштар төмендегідей жарияланады.
Var
pp : pointer;
Мұндағы POINTER - мәліметтердің стандартты типі; pp – кез-келген типті мәліметтер сақтала алатын жады адресінен тұратын айнымалы. Типтендірілген нұсқауыштарға келетін болсақ, олардың сипатталуы Turbo Pascal-да төмендегідей.
Var
px : ^char;
рy : ^intеger;
Бұл мысалда екі типтендірілген нұсқауыш рх және ру сипатталған. Бұл айнымалылардың мәндері сәйкесінше char және integer типті мәліметтер орналасатын оперативті жадыдағы адрестерді көрсетеді. Типтендірілген нұсқауыш сипаттамасы сол типті статикалық айнымалы сипаттамасынан тек нұсқауыш жағдайында типтің алдында «^» символы болатындығымен ғана ерекшеленетінін байқау қиын емес.
Қортындылайық: динамикалық жадыны қолдану керек болса, сипаттау бөлімінде айнымалының өзі емес, оған нұсқауыш (немесе сілтеме) жарияланады. Бұл жағдайда нұсқауыш кәдімгі айнымалыны, ал ол сілтейтін айнымалы - динамикалық айнымалыны көрсетеді. Мұнда, егер өрнекте нұсқауыш қатысу керек болса, сипаттау бөлімінде жарияланған идентификатор қолданылады, мысалы рх. Дегенмен, егер өрнекте нұсқауыш сілтейтін динамикалық айнымалы қатысуы керек болса, онда нұсқауыш идентификаторы «^» символымен толықтырылады, мысалы рх^. Мұндай әрекет атауын өзгерту деп аталады. Нұсқауыштарды қолдануды үйрену керек болса, осы абзацтағы айтылғандарды міндетті түрде меңгеру керек.
Мысал қарастырайық.
Type DatePointer=^Date;
Date=record
year:1900..2100;
month:1..12;
day:1..31;
next:DatePointer
end;
Var
pd: DatePointer;
Бұл мысалда жазбаны сипаттайтын Date типіне нұсқауыш болып табылатын Date Pointer типі жарияланған. Егер мұқият қарайтын болсақ, DatePointer типі ол сілтейтін Date типінен бұрын сипатталып тұр. Және де Datе жазбасының бір өрісі Date Pointer типіне жатады. Жалпы алғанда Turbo Pascal-да әлі сипатталмаған типтерге сілтеме жасауға болмайды, дегенмен осы жағдайда (нұсқауыштармен жұмыс істегенде жиі кездесетін жағдай), сипаттауларды қалай орналастырса да, әлі сипатталмаған типке сілтеме жасаудан қаша алмаймыз. Сондықтан нұсқауыштар үшін бір ерекшелік жасалынған: динамикалық мәліметтерге нұсқауыштың типі, мәліметтердің өздерін сипаттаудан бұрын жариялана алады. Ескерту: типтендірілген нұсқауыштарға қолданылатын меншіктеу амалы тек бір типті мәліметтерге жасалынатын нұсқауыш үшін мүмкін болады. Айталық, осындай нұсқауыштар программада жарияланған болсын.
Var
px, py:^char;
pz:^intеger;
Бұл жағдайда меншіктеу амалы px және pyнұсқауыштарына ғана мүмкін болады.
px:=py;
Ал келесі операторларды қолдануға болмайды.
pх:=pz; немесе
pz:=py;
Сонымен қатар типтендірілмеген нұсқауыш меншіктеу операторында кез-келген типтендірілген нұсқауышпен бірге қатыса алады. Мысалы, программада келесі нұсқауыштар жарияланған.
Var
px : ^char;
py : ^intеger;
pz : pointer;
Бұл айнымалылар үшін келесі меншіктеу амалдары мүмкін.
px:=pz; py:=pz;
pz:=py; pz:=px;
Осыдан, типтендірілмеген нұсқауыштар – мәліметтер типтерін түрлендірудің қолайлы құралы деген қортынды жасауға болады.