Сайфиев ж. Ф. С++ тилига кириш услубий қўлланма


swap() функциясига параметр сифатида ҳаволаларни узатиш



Download 3,43 Mb.
bet74/79
Sana09.07.2022
Hajmi3,43 Mb.
#767124
1   ...   71   72   73   74   75   76   77   78   79
Bog'liq
C dan uslubiy qulanma

swap() функциясига параметр сифатида ҳаволаларни узатиш.


Юқорида келтирилган дастур албатта тўғри ишлайди, лекин ундаги swap() функциясининг синтаксиси бироз мураккаб бўлиб тушуниш учун қийиндир. Биринчидан, swap() функцияси ичида бир неча марта кўрсаткич адресидаги қийматни олиш оператори билан ишлашда хатолик рўй бериши мумкин, бундан ташқари кўрсаткич адресидаги қийматни ўқиш операторида ишлатиш ноқулайдир. Иккинчидан, чақирилаётган функцияга ўзгарувчи адресини бериш зарурияти swap() функцияси бажарилишининг инкапсуляция принципига мувофиқ келмайди.


С++ тилида дастурлашнинг асосий мақсади, функция бажарилишида унинг деталларини фойдаланувчидан яширин ҳолда фойдаланишдир. Кўрсатгич ёрдамида параметрларни узатишда ўзгарувчиларни адресини олиш ўрнига чақириладиган функциянинг танасида ўзгарувчиларнинг адресини олиш ҳам мумкин. Бу масалани бошқачароқ ечими 9.7. – листингда келтирилган.
9.7. – листинг. swap() функциясида ҳаволадан фойдаланиш.
// 9.7. – листинг. Аргументларни ҳавола орқали //мурожаат сифатида узатишга мисол.
# include
void swap( int &x, int &y);
int main( )
{
int x = 5, y = 10;
cout << “Main. Before swap, x:” << x << “y :” <swap(x,y );
cout<< “Main. After swap, x:” << x << “y :” <return 0;
}
void swap( int &rx, int ry)
{
int temp;
cout<< “Swap.Before swap, rx:”<temp = rx;
rx = ry;
ry = temp;
cout << “Swap.After swap, rx:” <}
НАТИЖА:
Main. Before swap, x: 5, y: 10
Swap. Before swap, rx: 5, ry: 10
Swap. After swap, rx: 10, ry: 5
Main. After swap, x: 10, y:5

ТАҲЛИЛ
Бу листингда худди кўрсатгичлар билан берилган мисолдагидек 6 – сатрда иккита ўзгарувчи эълон қилинаяпти. Уларнинг қиймати эса 7 – сатрда экранга чиқарилаяпти. 8 – сатрда swap() функцияси чақирилаяпти ва унга x ва y ўзгарувчиларнинг адреслари эмас, балки ўзлари параметр сифатида узатилаяпти.


swap() функцияси чақирилгандан кейин дастурнинг бошқаруви 18 – сатрга ўтади. Параметр сифатида узатилган ўзгарувчиларнинг қийматлари 15–сатрда экранга чиқади. Бунда эътибор берган бўлсангиз, уларнинг қийматини экранга чиқариш учун ҳеч қандай махсус оператор талаб этилмайди, чунки биз бу ерда берилган қийматларнинг псевдонимидан фойдаландик.
16– 18 – сатрларда қиймат алмашинуви бажарилди ва улар 19 – сатрда экранга чиқарилди. Дастур бошқаруви swap() функцияси чақирилган жойга ўтди ва 9–сатрда, яъни main() функциясининг ичида бу қийматлар яна экранга чиқарилди.
Демак, биз функция ичида ҳаволаларни ишлатиш орқали янги имкониятларга эга бўлдик, яъни чақирилаётган функция орқали берилган маълумотни ўзгартирдик. Бунда чақирилаётган функция одатдаги функциялардан ҳеч қандай фарқ қилмайди.



Download 3,43 Mb.

Do'stlaringiz bilan baham:
1   ...   71   72   73   74   75   76   77   78   79




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