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


Download 3.45 Mb.
bet69/79
Sana18.10.2023
Hajmi3.45 Mb.
#1707139
1   ...   65   66   67   68   69   70   71   72   ...   79
Bog'liq
cpp buxoro

САВОЛЛАР.

  1. Кўрсаткич нима?

  2. Кўрсаткичлар билан ишлаш орқали қандай имкониятларга эришамиз?

  3. Объектларни хотиранинг динамик соҳасига жойлаштириш қандай қулайлик келтиради?

  4. Ўзгарувчи адресини олиш учун қандай оператор қўлланилади?

  5. Кўрсаткич кўрсатаётган адресда жойлашган қийматни қандай оператор орқали олиш мумкин?

  6. Кўрсаткичда сақланаётган адрес билан шу адресда жойлашган қийматларни фарқи нимада?

  7. Қуйидаги эълон қилинганларни бир - биридан фарқи нимадан иборат?

const int * ptrOne ва int * const ptrTwo

ТАЯНЧ ИБОРАЛАР


Кўрсаткич, ўзгарувчи адреси, адрес оператори, стекли хотира, динамик тақсимланувчи хотира, new оператори, delete оператори, хотирани сирқиб кетиши, this кўрсаткичи, осилган кўрсаткичлар
















Ҳаволалар (Ссылкалар)


Олдинги мавзуларда бўш хотирадаги объектларни бошқаришда кўрсаткичлардан фойдаланиш ва бу объектларга мурожаатларни қандай ташкил қилиш мумкинлигини билан танишган эдик. Ушбу мавзуда биз қуйидагиларни ўрганамиз:

  1. Ҳавола нима?

  2. Ҳаволани кўрсаткичдан қандай фарқи бор?

  3. Ҳаволаларлар қандай ҳосил қилинади ва қўлланилади?

  4. Ҳаволалардан фойдаланишда қандай чегаралар мавжуд?

  5. Бир функциядан бошқа функцияга объектларни ҳавола сифатида узатилиши қандай амалга оширилади?

Ҳавола нима?


Ҳавола – бу ўзгарувчи псевдонимидир. Ҳавола ҳосил қилиниши билан биз унга бошқа объект номи ёрдамида унинг адресатини ўзлаштирамиз. Шу вақтдан бошлаб ҳавола жорий объектнинг алтернатив номи бўлиб хизмат қилади ва бу ҳавола устида бажарилган барча амаллар ушбу объектга тегишли бўлади.


Ҳаволаларни эълон қилишда адресатдаги объект типи, ундан кейин ҳавола оператори (&), ундан кейин эса ҳавола номи ёзилади. Ҳаволаларни номлашда ўзгарувчиларни номлаш учун мумкин бўлган ихтиёрий номдан фойдаланиш мумкин. Лекин кўп дастурчилар ҳавола номлари олдидан «r» перефиксини ёзишни лозим деб ҳисоблашади. Агарда someInt номли бутун типли ўзгарувчи берилган бўлса, бу ўзгарувчига ҳаволани тузиш учун қуйидаги ёзувни ёзиш лозим.
int & rSomeInt = someInt

Бу ёзув қуйидагича ўқилади: rSomeInt – бутун сонли қийматга ҳавола бўлиб, у SomeInt ўзгарувчиси адресини ўзлаштириб олган. Ҳаволаларни тузиш ва уларни ишлатишга оид мисол 9.1. листингда келтирилган.


9.1. – листинг. Ҳаволаларнинг қўлланилиши.
// 9.1. – листинг
// Ҳаволаларни қўлланилишига мисол

# include < iostream.h>


int main()
{
int intOne;
int &rSomeRef = intone;
intOne = 5;
cout << “intOne:”<< intOne << endl;
cout<< “rSomeRef :”<rSomeRef = 7;
cout<< “intOne:” << intOne <cout<< “rSomeRef:” <return 0;
}

НАТИЖА:
int One: 5


rSomeRef: 5
intOne: 7
rSomeRef: 7

ТАҲЛИЛ
6–сатрда intOne номли бутун типдаги ўзгарувчи эълон қилинди. 7–сатрда эса rSomeRef номли бутун қийматли ҳавола эълон қилинаяпти ва унга intOne ўзгарувчисининг адреси ўзлаштирилаяпти. Агарда ҳавола эълон қилинса ва унга қиймат ўзлаштирилмаса дастурни компиляция қилиш вақтида хатолик рўй беради. Кўрсаткичдан фарқли равишда ҳавола эълон қилиниши билан унга қиймат ўзлаштирилиши лозим.


8–сатрда intOne ўзгарувчисига 5 қиймат ўзлаштирилди. 9–10 сатрларда intOne ўзгарувчиси ва rSomeOne ҳаволани қийматлари экранга чиқарилаяпти. Албатта, улар бир хил қийматга эга.
11 – сатрда rSomeOne ҳаволага 7 қиймат ўзлаштирилди. RSomeOne ҳавола intOne ўзгарувчисига псевдоним бўлганлиги сабабли 7 сони intOne ўзгарувчисига ҳам ўзлаштирилди. 12– ва 13– сатрлар орқали уларнинг қийматлари экранга чиқарилиб ҳавола ўзгарувчининг псевдоними (синоними) эканлиги яна бир бор тасдиқланган



Download 3.45 Mb.

Do'stlaringiz bilan baham:
1   ...   65   66   67   68   69   70   71   72   ...   79




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