|
Referat axborot tizimlari va texnologiyalari Algoritmlash va dasturlash asoslari
|
bet | 3/5 | Sana | 22.11.2023 | Hajmi | 171,85 Kb. | | #103416 | Turi | Referat |
Bog'liq azizbek algaritimlashDinamik massivlar
Dinamik massivlar bilan ishlash statik massivlardagi kabi dasturni qayta ishlash bosqichida amalga oshirilmaydigan, balki dastur talabiga binoan bajarilishi davomida ularni yaratish va o‘chirish amallari bilan bog'liq;
Dinamik massivlarni e'lon qilish uchun ko'rsatkichlar ishlatiladi.
C tilida xotirani bo‘shatish va ajratish kutubxona funksiyalari (calloc, malloc, free) yordamida amalga oshiriladi.
C++ tilida xotirani bo‘shatish va ajratish uchun oddiyroq mexanizm - new va delete amallari qo'llaniladi.
Bu amallarni sodda misollarda ko’rib chiqamiz:
1) type *p = new type (Qiymat);
– sizeof(type) hajmli xotira sohasini unga ko'rsatgichni o'rnatish va ushbu sohaga ko’rsatilgan Qiymatni yozish orqali ajratish; misol uchun:
int *p = new int(5); mos keladi int *p = new int;*p = 5;
Ajratilgan xotirani bo’shatish
delete p;
2) type *p = new type [n];– n ta ketma-ket joylashadigan ob'ektlar uchun xotira ajratish, bunda ko'rsatgich n*sizeof(type) o'lchamdagi operativ xotira soha boshini qaytaradi; bu massiv yaratish uchun foydalaniladi;
Bu holatda barcha ajratilgan xotirani bo’shatish quyidagicha bo’ladi:
delete [ ] p;
new amal natijasi - belgilangan turdagi va miqdordagi ma'lumotlarni joylashtirish uchun ajratilgan xotira sohasining boshi adresini beradi; agarda xatolik yuzaga kelsa (masalan, xotira etarli bo'lmaganda), natija NULL bo'ladi.
Bundan tashqari, delete (uchirish) amali ko'rsatilgan adresda joylashgan qiymatlarni yo'q qilmaydi, lekin kompilyatorga ilgari band xotiradan foydalanishga imkon beradi. Ammo bu qiymatlardan foydalanishga urinish kutilmagan natijalarga olib kelishi mumkin.
Massiv band qilgan xotirani bo'shatishda delete amalidagi kvadrat qavslar majburiy hisoblanadi. Ularning bo’lmasligi ham kutilmagan natijalarga olib kelishi mumkin.
|
| |