T e X t o u t ( X, y, s ) (Х, у) координатали нуқтадан s сатрини чиқаради
§1.4. Kо‘rsatkichli tiplar va ular bilan ishlash
Download 279.5 Kb.
|
4-tayyor
§1.4. Kо‘rsatkichli tiplar va ular bilan ishlash
Umuman olganda, programmadagi о‘zgarmaslar, о‘zgaruvchilar, funk-siyalar va sinf obyektlar adreslarini xotiraning alohida joyida saqlash va ular ustidan amallar bajarish mumkin. Qiymatlari adres bо‘lgan о‘zgaruvchilarga kо‘rsatkich о‘zgaruvchilar deyiladi. Kо‘rsatkich uch xil turda bо‘lishi mumkin: - birorta obyektga, xususan о‘zgaruvchiga kо‘rsatkich; - funksiyaga kо‘rsatkich; - void kо‘rsatkich. Kо‘rsatkichlarining bu xususiyatlari uning qabul qilishi mumkin bо‘lgan qiymatlarida farqlanadi. Kо‘rsatkichlar kо‘pincha dinamik xotira (boshqacha nomi «uyum» yoki «heap») bilan bog‘liq holda ishlatiladi. Xotiraning dinamik deyilishiga sabab, bu sohadagi bо‘sh xotira programma ishlash jarayonida, kerakli paytida ajratib olinadi va zarurat qolmaganida qaytariladi (bо‘shatiladi). Keyinchalik, bu xotira bо‘lagi programma tomonidan boshqa maqsadda yana ishlatilishi mumkin. Dinamik xotiraga faqat kо‘rsatkichlar yordamida murojaat qilish mumkin. Bunday о‘zgaruvchilar dinamik о‘zgaruvchilar deyiladi va ularni yashash vaqti yaratilgan nuqtadan boshlab programma oxirigacha yoki oshkor ravishda yо‘qotilgan (bog‘langan xotira bо‘shatilgan) joyigacha bо‘ladi. Kо‘rsatkichlarni e’lon qilishda unga boshlang‘ich qiymatlar berish mumkin. Boshlang‘ich qiymat (initsializator) kо‘rsatkich nomidan sо‘ng yoki qavs ichida yoki ‘=’ belgidan keyin beriladi. Boshlang‘ich qiymatlar quyidagi usullar bilan berilishi mumkin: I. Kо‘rsatkichga mavjud bо‘lgan obyektning adresini berish: a) adresni olish amal orqali: int i=5,k=4; // butun о‘zgaruvchilar int *p=&i; //p kо‘rsatkichga I о‘zgaruvchining adresi yoziladi int *p1(&k) ; // p1 kо‘rsatkichga k о‘zgaruvchining adresi yoziladi b) boshqa initsializatsiyalangan kо‘rsatkichni qiymatini berish: int *r=p; // p oldin e’lon qilingan va qiymatga ega bо‘lgan kо‘rsatkich v) massiv yoki funksiya nomini berish: int b[10]; // massivni e’lon qilish int *t=b; // massivning boshlang‘ich adresini berish void f(int a) {/* ... */} // funksiyani aniqlash void (*pf) (int); // funksiyaga kо‘rsatkichni e’lon qilish pf=f; // funksiya adresini kо‘rsatkichga berish II. Oshkor ravishda xotiraning absolyut adresini berish: Char *vp = (char*)0xB8000000; Bunda 0xB8000000- о‘n oltilik о‘zgarmas son va (char*) - turga keltirish amali bо‘lib, u vp о‘zgaruvchini xotiraning absolyut adresidagi baytlarni char sifatida qayta ishlovchi kо‘rsatkich turiga aylantirilishini anglatadi. III. Bо‘sh qiymat berish: int *suxx=NULL; int *r=0; Birinchi satrda maxsus NULL о‘zgarmasi ishlatilgan, ikkinchi satrda 0 qiymat ishlatilgan. Ikkala holda ham kо‘rsatkich hech qanday obyektga murojaat qilmaydi. Bо‘sh kо‘rsatkich asosan kо‘rsatkichni aniq bir obyektga kо‘rsatayotgan yoki yо‘qligini aniqlash uchun ishlatiladi. IV. Dinamik xotirada new amali bilan joy ajratish va uni adresini kо‘rsatkichga berish: Xotiraning obyektlar о‘rtasidan dinamik taqsimlanuvchi sohasidan joy ajratish uchun new operatori ishlatiladi. new operatoridan keyin xotiraga joylashtiriladigan obyekt tipini kо‘rsatish lozim. Bu obyektni saqlash uchun talab etiladigan xotira sohasi о‘lchovini aniqlash uchun kerak bо‘ladi. Masalan, new unsigned short int deb yozish orqali biz dinamik taqsimlanuvchi xotiradan ikki bayt joy ajratamiz. Xuddi shuningdek, new long satri orqali tо‘rt bayt joy obyektlar о‘trasida dinamik taqsimlanuvchi sohadan ajratiladi. Int *n=new int; // birinchi operator Int *m=new int(10); // ikkinchi operator Int *q=new int[10]; // uchinchi operator Birinchi operatorda new amali yordamida dinamik xotirada int uchun yetarli joy ajratib olinib, uning adresi n kо‘rsatkichga yuklanadi. Kо‘rsatkichning о‘zi uchun joy kompilyatsiya vaqtida ajratiladi. Umuman olganda, kо‘rsatkichlar - bu C++ tilida dasturlashning juda kuchli instumentdir. #inslude < iostheam.h > int main() {unsigned short shortVar = 5; unsigned long IongVar = 65535; long sVar = - 65535; cout « "shortVar :\t" << shortVar ; cout « "Address of shortVar:\t" ; cout«&shortVar« "\n"; cout << "IongVar :\ t" << IongVar ; cout << " Address of LongVar: \ t" ; cout« &longVar« "\n"; cout « " sVar :\t" « sVar; cout « "Address of sVar:\t"; cout « SsVar «"\n" ; return 0; } Download 279.5 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling