Задача этой книги дать краткое и четкое изложение языка С++ в соответствии со стандар том iso/iec 14882. Она предназначена для студентов, изучающих язык «с нуля»



Download 2 Mb.
bet32/232
Sana29.03.2022
Hajmi2 Mb.
#516205
TuriЗадача
1   ...   28   29   30   31   32   33   34   35   ...   232
Bog'liq
Т. А. Павловская C C . Программирование на языке высокого уровня

Указатели и массивы

Указатели


Êîãäa êîìïèëяòîð îáðaáaòûâaåò îïåðaòîð îïðåäåëåíèя ïåðåìåííîé, íaïðèìåð, int i=10;, îí âûäåëяåò ïaìяòü â ñîîòâåòñòâèè ñ òèïîì (int) è èíèöèaëèçèðóåò åå óêaçaííûì çía÷åíèåì (10). Âñå îáðaùåíèя â ïðîãðaììå ê ïåðåìåííîé ïî åå èìå- íè (i) çaìåíяþòñя êîìïèëяòîðîì ía aäðåñ îáëañòè ïaìяòè, â êîòîðîé õðaíèòñя çía÷åíèå ïåðåìåííîé. Ïðîãðaììèñò ìîæåò îïðåäåëèòü ñîáñòâåííûå ïåðåìåííûå äëя õðaíåíèя aäðåñîâ îáëañòåé ïaìяòè. Òaêèå ïåðåìåííûå íaçûâaþòñя óêaçaòå- ëяìè.
Èòaê, ónaçaòåëè ïðåäíaçía÷åíû äëя õðaíåíèя aäðåñîâ îáëañòåñ ïaìяòè.  C++ ðaçëè÷aþò òðè âèäa óêaçaòåëåé — óêaçaòåëè ía îáúåêò, ía ôóíêöèþ è ía void, îò- ëè÷aþùèåñя ñâîéñòâaìè è íaáîðîì äîïóñòèìûõ îïåðaöèé. Óêaçaòåëü íå яâëяåò- ñя ñaìîñòîяòåëüíûì òèïîì, îí âñåãäa ñâяçaí ñ êaêèì-ëèáî äðóãèì êîíêðåòíûì òèïîì.

Óêaçaòåëü ía ôóíêöèþ ñîäåðæèò aäðåñ â ñåãìåíòå êîäa, ïî êîòîðîìó ðañïîëaãa- åòñя èñïîëíяåìûé êîä ôóíêöèè, òî åñòü aäðåñ, ïî êîòîðîìó ïåðåäaåòñя óïðaâëå- íèå ïðè âûçîâå ôóíêöèè. Óêaçaòåëè ía ôóíêöèè èñïîëüçóþòñя äëя êîñâåííîãî âûçîâa ôóíêöèè (íå ÷åðåç åå èìя, a ÷åðåç îáðaùåíèå ê ïåðåìåííîé, õðaíяùåé åå aäðåñ), a òaêæå äëя ïåðåäa÷è èìåíè ôóíêöèè â äðóãóþ ôóíêöèþ â êa÷åñòâå ïaða- ìåòða. Ónaçaòåëü ôóínöèè èìååò òèï «óêaçaòåëü ôóíêöèè, âîçâðaùaþùåé çía÷å- íèå çaäaííîãî òèïa è èìåþùåé aðãóìåíòû çaäaííîãî òèïa»:


òèï (*èìя) ( ñïèñîê_òèïîâ_aðãóìåíòîâ );
Íaïðèìåð, îáúяâëåíèå:
int (*fun) (double, double);
çaäaåò óêaçaòåëü ñ èìåíåì fun ía ôóíêöèþ, âîçâðaùaþùóþ çía÷åíèå òèïa int è èìåþùóþ äâa aðãóìåíòa òèïa double.
Óêaçaòåëü ía îáúåêò ñîäåðæèò aäðåñ îáëañòè ïaìяòè, â êîòîðîé õðaíяòñя äaííûå îïðåäåëåííîãî òèïa (îñíîâíîãî èëè ñîñòaâíîãî). Ïðîñòåéøåå îáúяâëåíèå ónaça- òåëя ía îáúånò (â äaëüíåéøåì íaçûâaåìîãî ïðîñòî óêaçaòåëåì) èìååò âèä:
òèï *èìя;
ãäå òèï ìîæåò áûòü ëþáûì, êðîìå ññûëêè (î ññûëêaõ ðaññêaçûâaåòñя ía ñ. 58) è áèòîâîãî ïîëя (ñì. ñ. 69), ïðè÷åì òèï ìîæåò áûòü ê ýòîìó ìîìåíòó òîëüêî îáúяâ- ëåí, íî åùå íå îïðåäåëåí (ñëåäîâaòåëüíî, â ñòðóêòóðå, íaïðèìåð, ìîæåò ïðèñóò- ñòâîâaòü óêaçaòåëü ía ñòðóêòóðó òîãî æå òèïa).
Çâåçäî÷na îòíîñèòñя íåïîñðåäñòâåííî n èìåíè, ïîýòîìó äëя òîãî, ÷òîáû îáúяâèòü íåñêîëüêî óêaçaòåëåé, òðåáóåòñя ñòaâèòü åå ïåðåä èìåíåì êaæäîãî èç íèõ. Ía- ïðèìåð, â îïåðaòîðå
int *a, b, *c;
îïèñûâaþòñя äâa óêaçaòåëя ía öåëîå ñ èìåíaìè a è c, a òaêæå öåëaя ïåðåìåííaя b.
Ðaçìåð óêaçaòåëя çaâèñèò îò ìîäåëè ïaìяòè. Ìîæíî îïðåäåëèòü óêaçaòåëü ía óêaçaòåëü è ò. ä.
Ónaçaòåëü ía void ïðèìåíяåòñя â òåõ ñëó÷aяõ, êîãäa êîíêðåòíûé òèï îáúåêòa, aä- ðåñ êîòîðîãî òðåáóåòñя õðaíèòü, íå îïðåäåëåí (íaïðèìåð, åñëè â îäíîé è òîé æå ïåðåìåííîé â ðaçíûå ìîìåíòû âðåìåíè òðåáóåòñя õðaíèòü aäðåña îáúåêòîâ ðaç- ëè÷íûõ òèïîâ).
Óêaçaòåëþ ía void ìîæíî ïðèñâîèòü çía÷åíèå óêaçaòåëя ëþáîãî òèïa, a òaêæå ñðaâíèâaòü åãî ñ ëþáûìè óêaçaòåëяìè, íî ïåðåä âûïîëíåíèåì êaêèõ-ëèáî äåéñò- âèé ñ îáëañòüþ ïaìяòè, ía êîòîðóþ îí ññûëaåòñя, òðåáóåòñя ïðåîáðaçîâaòü åãî ê êîíêðåòíîìó òèïó яâíûì îáðaçîì (ñì. ñ. 231).
Óêaçaòåëü ìîæåò áûòü êîíñòaíòîé èëè ïåðåìåííîé, a òaêæå óêaçûâaòü ía êîí- ñòaíòó èëè ïåðåìåííóþ. Ðaññìîòðèì ïðèìåðû:
int i; // öåëaя ïåðåìåííaя
const int ci = 1; // öåëaя êîíñòaíòa
int * pi; // óêaçaòåëü ía öåëóþ ïåðåìåííóþ
const int * pci; // óêaçaòåëü ía öåëóþ êîíñòaíòó
int * const cp = &i; // óêaçaòåëü-êîíñòaíòa ía öåëóþ ïåðåìåííóþ const int * const cpc = &ci; // óêaçaòåëü-êîíñòaíòa ía öåëóþ êîíñòaíòó

Êaê âèäíî èç ïðèìåðîâ, ìîäèôèêaòîð Const, íaõîäяùèéñя ìåæäó èìåíåì óêaça- òåëя è çâåçäî÷êîé, îòíîñèòñя ê ñaìîìó óêaçaòåëþ è çaïðåùaåò åãî èçìåíåíèå, a Const ñëåâa îò çâåçäî÷êè çaäaåò ïîñòîяíñòâî çía÷åíèя, ía êîòîðîå îí óêaçûâaåò. Äëя èíèöèaëèçaöèè óêaçaòåëåé èñïîëüçîâaía îïåðaöèя ïîëó÷åíèя aäðåña &.


Âåëè÷èíû òèïa óêaçaòåëü ïîä÷èíяþòñя îáùèì ïðaâèëaì îïðåäåëåíèя îáëañòè äåéñòâèя, âèäèìîñòè è âðåìåíè æèçíè.

Download 2 Mb.

Do'stlaringiz bilan baham:
1   ...   28   29   30   31   32   33   34   35   ...   232




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish