Dinamik xotiradan foydalanib ,dinamik xotirani ishlatishda ko’rsatkich turlari.
Reja:
Dinamik xotira haqida ma'lumot
Xotirani dinamik ravishda taqsimlash
Ko'rsatgich turdagi o'zgaruvchilar
Ba'zan xotira hajmini o'zgartirish kerak bo'ladi. Shunday qilib, xotirani dinamik ravishda ajratish mumkin. Ma'lumotlar elementlarining kiritilishi va o'chirilishiga qarab, xotira o'sishi yoki qisqarishi mumkin. Bu xotirani dinamik ajratish deb nomlanadi.
C tilida, stdlib.h sarlavha fayli, xotirani dinamik ajratish uchun to'rtta funktsiyadan iborat. Ular calloc, malloc, realloc va bepul. Malloc () funktsiyasi kerakli hajmdagi baytlarni ajratadi va ajratilgan xotiraning birinchi baytini ko'rsatib, bo'sh ko'rsatgichni qaytaradi. Calloc () funktsiyasi kerakli hajmdagi baytlarni ajratadi va ularni nolga tenglashtiradi. Keyin bo'sh ko'rsatgichni xotiraga qaytaradi. Free () funktsiyasi ajratilgan xotirani qayta taqsimlash uchun ishlatiladi. Va realloc funktsiyasi oldindan ajratilgan xotirani o'zgartirishi mumkin. Calloc yoki malloc yordamida xotira ajratilgandan so'ng, xotira hajmi aniqlanadi, lekin ular realloc funktsiyasi yordamida ko'paytirilishi yoki kamaytirilishi mumkin. Java-da to'plamlardan dinamik xotirani ajratish uchun foydalanish mumkin.
Xotirani dinamik ravishda taqsimlashning asosiy ustunligi shundaki, u xotirani tejaydi. Dasturchi xotirani ajratishi yoki kerak bo'lganda xotirani bo'shatishi mumkin. Xotira bajarish paytida qayta taqsimlanishi mumkin va kerak bo'lmaganda xotirani bo'shatishi mumkin. Xotirani dinamik ravishda taqsimlash statik xotirani taqsimlashdan ham samaraliroq. Kamchiliklardan biri shundaki, xotirani dinamik ravishda taqsimlashni amalga oshirish murakkabdir.
Xotirani dinamik ravishda taqsimlash bu xotirani ajratish usuli bo'lib, xotira ajratilgandan so'ng uni o'zgartirish mumkin.
Xotirani dinamik ravishda taqsimlashda xotirani minimallashtirish yoki shunga mos ravishda maksimal darajada oshirish mumkin.
|
|
Xotirani dinamik ravishda taqsimlashni amalga oshirish juda murakkab.
|
|
Dinamik xotirada ajratishni bajarilishi statik xotirani taqsimlashdan sekinroq.
|
|
Xotirani dinamik ravishda taqsimlash xotirani qayta ishlatishga imkon beradi. Dasturchi kerak bo'lganda ko'proq xotira ajratishi mumkin. U kerak bo'lganda xotirani bo'shatishi mumkin.
|
Programma ishlashi jarayonida yuzaga keladigan va o‘lchamlari o‘zgarishi mumkin bo‘lgan programma obyektlariga dinamik obyektlar deyiladi.
Ayniqsa, statik obyektlar uchun chekli xotira (segment) ajratiladigan SHEHM larda dinamik obyektlardan foydalanish ancha samaralidir. Standart Paskal va uning SHEHMlardagi varianti Turbo-Paskal (TP) muhitida dinamik obyektlardan foydalanish imkoniyati ko‘zda tutilgan. Paskal tilida dinamik obyektlar bilan ishlash uchun maxsus ko‘rsatgich tur aniqlangan. Bu turning qiymati qandaydir programma obyektiga ko‘rsatgich bo‘lib, u orqali obyektga bevosita murojaat amalga oshiriladi. Programmada har bir dinamik obyektga ko‘rsatgich turidagi statik o‘zgaruvchi mos qo‘yiladi va u orqali dinamik obyekt ustida amallar qilinadi.
Ko‘rsatgich turidagi o‘zgaruvchining qiymati programma bajarilishi jarayonida amalga oshiriladi. Ko‘rsatgich tur sintaksisi quyidagicha
= ^ < tur nomi>,
bu yerda - ko‘rsatgich tur alomati, - standart yoki oldin aniqlangan tur.
Ta’rif: Qiymatlari adres bo‘lgan o‘zgaruvchilar ko‘rsatkich o‘zgaruvchilar deb ataladi.
Ko‘rsatkichlar uch xil turda bo‘ladi:
-Funksiyaga ko‘rsatkich;
-Obyektga o‘zgaruvchiga ko‘rsatkich;
-Void ko‘rsatkich.
Ko‘rsatkichlar, albatta, birorta turga bog’langan bo‘ladi, ya’ni u ko‘rsatgan adresda ma’lum bir qiymat joylashishi mumkin va bu qiymat kompyuter xotirasidan qancha joy egallashi oldindan ma’lum bo‘lishi kerak.
Do'stlaringiz bilan baham: |