T e X t o u t ( X, y, s ) (Х, у) координатали нуқтадан s сатрини чиқаради


§1.4. Kо‘rsatkichli tiplar va ular bilan ishlash


Download 279.5 Kb.
bet5/8
Sana06.02.2023
Hajmi279.5 Kb.
#1171165
1   2   3   4   5   6   7   8
Bog'liq
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:
1   2   3   4   5   6   7   8




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