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



Download 2 Mb.
bet38/232
Sana29.03.2022
Hajmi2 Mb.
#516205
TuriЗадача
1   ...   34   35   36   37   38   39   40   41   ...   232
Bog'liq
Т. А. Павловская C C . Программирование на языке высокого уровня

Рис. 1.9. Обмен значений двух переменных

Èäåíòèôèêaòîð ìaññèâa яâëяåòñя êîíñòaíòíûì óêaçaòåëåì ía åãî íóëåâîé ýëå- ìåíò. Íaïðèìåð, äëя ìaññèâa èç ïðåäûäóùåãî ëèñòèíãa èìя b — ýòî òî æå ñaìîå,


÷òî &b[0], a ê i-ìó ýëåìåíòó ìaññèâa ìîæíî îáðaòèòüñя, èñïîëüçóя âûðaæåíèå
*(b+i). Ìîæíî îïèñaòü óêaçaòåëü, ïðèñâîèòü åìó aäðåñ ía÷aëa ìaññèâa è ðaáîòaòü ñ ìaññèâîì ÷åðåç óêaçaòåëü. Cëåäóþùèé ôðaãìåíò ïðîãðaììû êîïèðóåò âñå ýëå- ìåíòû ìaññèâa a â ìaññèâ b:
int a[100], b[100];
int *pa = a; // èëè int *p = &a[0]; int *pb = b;
fOr(inti= 0; i<100; i++)
*pb++ = *pa++; // èëè pb[i] = pa[i];
Äèíaìè÷åñnèå ìaññèâû ñîçäaþò ñ ïîìîùüþ îïåðaöèè new, ïðè ýòîì íåîáõîäèìî óêaçaòü òèï è ðaçìåðíîñòü, íaïðèìåð:

int n = 100;


flOat *p = new flOat [n];
 ýòîé ñòðîêå ñîçäaåòñя ïåðåìåííaя-óêaçaòåëü ía flOat, â äèíaìè÷åñêîé ïaìяòè îòâîäèòñя íåïðåðûâíaя îáëañòü, äîñòaòî÷íaя äëя ðaçìåùåíèя 100 ýëåìåíòîâ âå- ùåñòâåííîãî òèïa, è aäðåñ åå ía÷aëa çaïèñûâaåòñя â óêaçaòåëü p. Äèíaìè÷åñêèå ìaññèâû íåëüçя ïðè ñîçäaíèè èíèöèaëèçèðîâaòü, è îíè íå îáíóëяþòñя.
Ïðåèìóùåñòâî äèíaìè÷åñêèõ ìaññèâîâ ñîñòîèò â òîì, ÷òî ðaçìåðíîñòü ìîæåò áûòü ïåðåìåííîé, òî åñòü îáúåì ïaìяòè, âûäåëяåìîé ïîä ìaññèâ, îïðåäåëяåòñя ía ýòaïå âûïîëíåíèя ïðîãðaììû. Äîñòóï ê ýëåìåíòaì äèíaìè÷åñêîãî ìaññèâa îñó- ùåñòâëяåòñя òî÷íî òaê æå, êaê ê ñòaòè÷åñêèì, íaïðèìåð, ê ýëåìåíòó íîìåð 5 ïðè- âåäåííîãî âûøå ìaññèâa ìîæíî îáðaòèòüñя êaê p[5] èëè *(p+5).
Àëüòåðíaòèâíûé ñïîñîá ñîçäaíèя äèíaìè÷åñêîãî ìaññèâa — èñïîëüçîâaíèå ôóíêöèè mallOC áèáëèîòåêè C:
int n = 100;
flOat *q = (flOat *) mallOC(n * sizeOf(flOat));
Îïåðaöèя ïðåîáðaçîâaíèя òèïa, çaïèñaííaя ïåðåä îáðaùåíèåì ê ôóíêöèè mallOC, òðåáóåòñя ïîòîìó, ÷òî ôóíêöèя âîçâðaùaåò çía÷åíèå óêaçaòåëя òèïa vOid*, a èíè- öèaëèçèðóåòñя óêaçaòåëü ía flOat.
Ïaìяòü, çaðåçåðâèðîâaííaя ïîä äèíaìè÷åñêèé ìaññèâ ñ ïîìîùüþ new [], äîëæía îñâîáîæäaòüñя îïåðaöèåé delete [], a ïaìяòü, âûäåëåííaя ôóíêöèåé mallOC — ïî- ñðåäñòâîì ôóíêöèè free, íaïðèìåð:
delete [] p; free (q);
Ïðè íåñîîòâåòñòâèè ñïîñîáîâ âûäåëåíèя è îñâîáîæäåíèя ïaìяòè ðåçóëüòaò íå îïðåäåëåí. Ðaçìåðíîñòü ìaññèâa â îïåðaöèè delete íå óêaçûâaåòñя, íî êâaäðaò- íûå ñêîáêè îáяçaòåëüíû.

Download 2 Mb.

Do'stlaringiz bilan baham:
1   ...   34   35   36   37   38   39   40   41   ...   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