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



Download 2 Mb.
bet48/232
Sana29.03.2022
Hajmi2 Mb.
#516205
TuriЗадача
1   ...   44   45   46   47   48   49   50   51   ...   232
Bog'liq
Т. А. Павловская C C . Программирование на языке высокого уровня

Глобальные переменные


Ãëîáaëüíûå ïåðåìåííûå âèäíû âî âñåõ ôóíêöèяõ, ãäå íå îïèñaíû ëîêaëüíûå ïå- ðåìåííûå ñ òåìè æå èìåíaìè, ïîýòîìó èñïîëüçîâaòü èõ äëя ïåðåäa÷è äaííûõ ìåæäó ôóíêöèяìè î÷åíü ëåãêî. Òåì íå ìåíåå ýòî íå ðåêîìåíäóåòñя, ïîñêîëüêó çaòðóäíяåò îòëaäêó ïðîãðaììû è ïðåïяòñòâóåò ïîìåùåíèþ ôóíêöèé â áèáëèîòå- êè îáùåãî ïîëüçîâaíèя. Íóæíî ñòðåìèòüñя ê òîìó, ÷òîáû ôóíêöèè áûëè ìaêñè- ìaëüíî íåçaâèñèìû, a èõ èíòåðôåéñ ïîëíîñòüþ îïðåäåëяëñя ïðîòîòèïîì ôóíê- öèè.


Возвращаемое значение


Ìåõaíèçì âîçâðaòa èç ôóíêöèè â âûçâaâøóþ åå ôóíêöèþ ðåaëèçóåòñя îïåða- òîðîì
return [ âûðaæåíèå ];
Ôóíêöèя ìîæåò ñîäåðæaòü íåñêîëüêî îïåðaòîðîâ return (ýòî îïðåäåëяåòñя ïî- òðåáíîñòяìè aëãîðèòìa). Åñëè ôóíêöèя îïèñaía êaê vOid, âûðaæåíèå íå óêaçûâa- åòñя. Îïåðaòîð return ìîæíî îïóñêaòü äëя ôóíêöèè òèïa vOid, åñëè âîçâðaò èç íåå ïðîèñõîäèò ïåðåä çaêðûâaþùåé ôèãóðíîé ñêîáêîé, è äëя ôóíêöèè main.  ýòîé êíèãå äëя ýêîíîìèè ìåñòa îïåðaòîð return â ôóíêöèè main íå óêaçaí, ïî- ýòîìó ïðè êîìïèëяöèè ïðèìåðîâ âûäaåòñя ïðåäóïðåæäåíèå. Âûðaæåíèå, óêaçaí- íîå ïîñëå return, íåяâíî ïðåîáðaçóåòñя ê òèïó âîçâðaùaåìîãî ôóíêöèåé çía÷å- íèя è ïåðåäaåòñя â òî÷êó âûçîâa ôóíêöèè.
Ïðèìåðû:
int f1(){return 1;} // ïðaâèëüíî
vOid f2(){return 1;} // íåïðaâèëüíî, f2 íå äîëæía âîçâðaùaòü çía÷åíèå dOuble f3{return 1;} // ïðaâèëüíî, 1 ïðåîáðaçóåòñя ê òèïó dOuble

ВНИМАНИЕ


Íåëüçя âîçâðaùaòü èç ôóíêöèè óêaçaòåëü ía ëîêaëüíóþ ïåðåìåííóþ, ïîñêîëüêó ïaìяòü, âûäåëåííaя ëîêaëüíûì ïåðåìåííûì ïðè âõîäå â ôóíêöèþ, îñâîáîæäaåòñя ïîñëå âîçâðaòa èç íåå.

Ïðèìåð:
int* f(){


inta= 5;
return &a; // íåëüçя!
}


Параметры функции


Ìåõaíèçì ïaðaìåòðîâ яâëяåòñя îñíîâíûì ñïîñîáîì îáìåía èíôîðìaöèåé ìåæäó âûçûâaåìîé è âûçûâaþùåé ôóíêöèяìè. Ïaðaìåòðû, ïåðå÷èñëåííûå â çaãîëîâêå îïèñaíèя ôóíêöèè, íaçûâaþòñя ôîðìaëüíûìè, a çaïèñaííûå â îïåðaòîðå âûçîâa ôóíêöèè — ôanòè÷åñnèìè.
Ïðè âûçîâå ôóíêöèè â ïåðâóþ î÷åðåäü âû÷èñëяþòñя âûðaæåíèя, ñòîяùèå ía ìåñòå ôaêòè÷åñêèõ ïaðaìåòðîâ; çaòåì â ñòåêå âûäåëяåòñя ïaìяòü ïîä ôîðìaëü- íûå ïaðaìåòðû ôóíêöèè â ñîîòâåòñòâèè ñ èõ òèïîì, è êaæäîìó èç íèõ ïðèñâaè- âaåòñя çía÷åíèå ñîîòâåòñòâóþùåãî ôaêòè÷åñêîãî ïaðaìåòða. Ïðè ýòîì ïðîâåðя- åòñя ñîîòâåòñòâèå òèïîâ è ïðè íåîáõîäèìîñòè âûïîëíяþòñя èõ ïðåîáðaçîâaíèя. Ïðè íåñîîòâåòñòâèè òèïîâ âûäaåòñя äèaãíîñòè÷åñêîå ñîîáùåíèå.
Cóùåñòâóåò äâ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ðaìåòðîâ:
inClude
vOid f(int i, int* j, int& k); int main(){
inti= 1,j= 2,k= 3; COut <<"i j k\n";
COut << i <<' '<< j <<' '<< k <<'\n';
f(i, &j, k);
COut << i <<' '<< j <<' '<< k;
return 0;
}
vOid f(int i, int* j, int& k){ i++; (*j)++; k++;
}

Ðåçóëüòaò ðaáîòû ïðîãðaììû:


ijk 123
134
Ïåðâûé ïaðaìåòð (i) ïåðåäaåòñя ïî çía÷åíèþ. Åãî èçìåíåíèå â ôóíêöèè íå âëèяåò ía èñõîäíîå çía÷åíèå. Âòîðîé ïaðaìåòð (j) ïåðåäaåòñя ïî aäðåñó ñ ïî- ìîùüþ óêaçaòåëя, ïðè ýòîì äëя ïåðåäa÷è â ôóíêöèþ aäðåña ôaêòè÷åñêîãî ïaða- ìåòða èñïîëüçóåòñя îïåðaöèя âçяòèя aäðåña, a äëя ïîëó÷åíèя åãî çía÷åíèя â ôóíêöèè òðåáóåòñя îïåðaöèя ðaçûìåíîâaíèя. Òðåòèé ïaðaìåòð (k) ïåðåäaåòñя ïî aäðåñó ñ ïîìîùüþ ññûëêè.
Ïðè ïåðåäa÷å ïî ññûënå â ôóíêöèþ ïåðåä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ïðåòèòü èçìåíåíèå ïaðaìåòða âíóòðè ôóíêöèè, èñïîëüçóåòñя ìîäèôèêaòîð COnst:
int f(COnst Char*);
Char* t(Char* a, COnst int* b);


СОВЕТ
Ðåêîìåíäóåòñя óêaçûâaòü COnst ïåðåä âñåìè ïaðaìåòðaìè, èçìåíåíèå êîòîðûõ â ôóíêöèè íå ïðåäóñìîòðåíî. Ýòî îáëåã÷aåò îòëaäêó áîëüøèõ ïðîãðaìì, òaê êaê ïî çaãîëîâêó ôóíê- öèè ìîæíî ñäåë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çaòåëü), ïåðåäaþòñя â ôóíêöèþ ïî çía÷åíèþ.

Download 2 Mb.

Do'stlaringiz bilan baham:
1   ...   44   45   46   47   48   49   50   51   ...   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