Manzillar ustidagi arifmetik amallar.
C tilidagi manzillarda quyidagi amallar aniqlanadi:
yig'ish, siz ko'rsatkichga butun son qo'shishingiz mumkin;
ayirish, siz ko'rsatkichlarni ayirish yoki ko'rsatgichdan butun sonni ayirish mumkin.
Biroq, arifmetik amallarni bajarishda ba'zi o'ziga xosliklar mavjud. Keling, ularni quyidagi misolda ko'rib chiqaylik.
double *p1;*p2;*i;++++;++;
}
p1++ operatsiyasi adresni 8 ga, p2++ operatsiyasi adresni 4 ga, i++ amali esa 2 ga oshiradi. Manzil arifmetik amallari quyidagicha bajariladi:
oshirish amali koʻrsatgichni asosiy turdagi keyingi obʼyektga yuborishga sabab boʻladi (p1 uchun u double, p2 uchun bu float, i uchun int);
pasaytirish operatsiyasi ko'rsatgichni oldingi asosiy turdagi ob'ektga murojaat qilishiga olib keladi;
p1=p1+n operatsiyasidan so‘ng ko‘rsatkich n ta asosiy turdagi ob’ektlarga o‘tkaziladi; p1+n, go‘yo massivning n-elementiga murojaat qiladi, agar p1 boshining manzili bo‘lsa. massiv.
1.6 Dinamik massivlar bilan ishlashda manzillar va ko'rsatkichlardan foydalanish
C tilidagi ko'rsatkichlardan foydalanib, ma'lum turdagi ma'lumotlarni saqlash uchun ma'lum hajmdagi xotira maydonini (dinamik massiv) ajratishingiz mumkin. Buning uchun siz quyidagi amallarni bajarishingiz kerak:
. Muayyan turdagi ko'rsatkichni (masalan, p o'zgaruvchisi) tavsiflang.
. Ko'rsatgich tomonidan ko'rsatilgan manzildan boshlab, ma'lum o'lchamdagi xotira qismini ajratish uchun calloc, malloc yoki yangi operatsiyalardan foydalaning. Shundan so'ng, p ajratilgan xotira maydonining birinchi elementining manzili (massivning 0-elementi), p+1 manzili - ajratilgan xotira maydonidagi keyingi element (dinamik massivning 1-elementi), & , p+i - i-elementning manzili.
Siz faqat ajratilgan xotira maydoni chegaralaridan tashqariga chiqmasligingizga ishonch hosil qilishingiz kerak.
Dinamik p massivning i-elementiga *(p+i) yoki p[i] ikkita usuldan birida kirish mumkin.
. Xotiraning bir qismi endi kerak bo'lmaganda, uni free() funksiyasi, o'chirish operatsiyasi yordamida bo'shatish mumkin.
Dinamik o'zgaruvchilar bilan ishlash haqida batafsil ma'lumotga ega bo'lishdan oldin keling, calloc , malloc , realloc va free funksiyalarini hamda new va delete operatsiyalarini ko'rib chiqaylik .
Malloc funksiyasining yagona parametri baytlarda ajratilgan xotira maydoni hajmini belgilaydigan belgisiz butun son qiymatidir. Malloc funktsiyasi ajratilgan xotiraga tipsiz ko'rsatkichni (void *) qaytaradi. malloc funktsiyasini chaqirish o'xshaydi
*malloc(n);
bu yerda n ajratilgan xotira maydoni hajmini baytlarda belgilaydi, agar xotira taqsimoti bajarilmagan bo'lsa, funksiya NULL qiymatini va ajratish muvaffaqiyatli bo'lsa, ajratilgan xotira maydoniga ko'rsatgichni qaytaradi.
Do'stlaringiz bilan baham: |