Muhammad Al-Xorazmiy nomidagi Toshkent Axborot texnologiyalari Universiteti Dasturiy injenering fakulteti swd 008 guruh talabasi Qo’chqorov Jasurning Dasturlash fanidan “Ko’rsatkich nima ?


Download 166.52 Kb.
bet3/9
Sana28.12.2022
Hajmi166.52 Kb.
#1019139
1   2   3   4   5   6   7   8   9
Bog'liq
Jasur Qo\'chqorov dasturlash mustaqil i9sh

New operatori.Xotiraning ob’ektlar oʻrtasidan dinamik taqsimlanuvchi sohasidan joy ajratish uchun new operatori ishlatiladi.new operatoridan keyin xotiraga joylashtiriladigan ob’ekttipini koʻrsatish lozim. Bu ob’ektni saqlash uchun talab etiladigan xotira sohasi oʻlchovini aniqlash uchun kerak boʻladi. Masalan, new unsigned short intdeb yozish orqali biz dinamik taqsimlanuvchi xotiradan ikki bayt joy ajratamiz. Xuddi shuningdek,new long satri orqali toʻrt bayt joy ob’ektlar oʻtrasida dinamik taqsimlanuvchi sohadan ajratiladi.new operatori natija sifatida belgilangan xotira yacheykasining adresini qaytaradi. Bu addres koʻrsatkichga oʻzlashtirilishi lozim. Masalan, unsigned shorttipidagi oʻzgaruvchi uchun dinamik sohadan joy ajratish uchun quyidagi dastur kodi yoziladi:

unsigned short int *pPointer;
pPointer = new unsigned short int;

Yoki xuddi shu amalni bitta satrda ham yozish mumkin. unsigned short int * pPoiner = new unsigned short int;


Ikkala holatda ham pPointer koʻrsatkichi unsigned short inttipidagi
qiymatni saqlovchi dinamik soha xotirasining yacheykasini koʻrsatib
turadi. EndipPointer koʻrsatkichini shu tipdagi ixtiyoriy oʻzgaruvchiga
koʻrsatkich sifatida qoʻllash mumkin. Ajratilgan xotira sohasiga biror
bir qiymat joylashtirish uchun quyidagicha yozuv yoziladi: * pPointer = 72 ;
Bu satr quyidagi maʻnoni anglatadi: «pPointerkoʻrsatkichida adresi
saqlanayotgan xotiraga 72 sonini yozing». Dinamik xotira sohasi albatta
chegaralangan boʻladi. U toʻlib qolganda new operatori orqali xotiradan
joy ajratishga urinsak xatolik yuz beradi.
Delete operatori. Agarda oʻzgaruvchi uchun ajratilgan xotira kerak
boʻlmasa uni boʻshatish zarur. Bu oʻzidan keyin koʻrsatkich nomi
yoziladigan delete operatori yordamida amalga oshiriladi. deleteoperatori koʻrsatkich orqali aniqlangan xotira sohasini boʻshatadi.
Shuni esda saqlash lozimki, dinamik xotira sohasidagi adresni oʻzida
saqlovchi koʻrsatkich lokal oʻzgaruvchi boʻlishi mumkin. Shuning
uchun bu koʻrsatkich eʻlon qilingan funksiyadan chiqishimiz bilan
koʻrsatkich ham xotiradan oʻchiriladi. Lekin new operatori orqali bu
koʻrsatkichga dinamik xotiradan ajratilgan joy boʻshatilmaydi. Natijada
xotiraning bu qismi kirishga imkonsiz boʻlib qoladi. Dasturchilar bu
holatni xotiraning sirqib ketishi, yoki yoʻqolishi deb tavsiflaydilar. Bu tavsif haqiqatga butunlay mos keladi, chunki dastur ishini yakunlaguncha xotirani bu qismidan foydalanib boʻlmaydi.
Xotirani ajratilgan qismini boʻshatish uchun delete kalitli soʻzidan
foydalaniladi. Masalan: delete pPointer;
Bunda koʻrsatkich oʻchirilmaydi, balki unda saqlanayotgan
adresdagi xotira sohasi boʻshatiladi. Belgilangan xotirani boʻshatilishi
koʻrsatkichga taʻsir qilmaydi, unga boshqa adresni oʻzlashtirish ham
mumkin.

Download 166.52 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9




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