R. A. Ro‘ziyev, U. M. Mirsanov, F. J. Toxirov, L. S. Isroilova, H. N. Arziqulov


Download 1.27 Mb.
bet29/45
Sana14.10.2023
Hajmi1.27 Mb.
#1703549
1   ...   25   26   27   28   29   30   31   32   ...   45
Bog'liq
C qo`llanma 29.06

Ko‘rsatkich ustidan amallar
Ko‘rsatkich ustidan quyidagi amallar bajarilishi mumkin:
1) obyektga vositali murojaat qilish;
2) qiymat berish;
3) ko‘rsatkichga konstanta qiymatni qo‘shish;
4) ayirish;
5) inkrement va dekrement;
6) solishtirish;
7) turga keltirish.
Vositali murojaat qilish amali
Bu amal ko‘rsatkichdagi manzil bo‘yicha joylashgan qiymatni olish yoki qiymat berish uchun ishlatiladi:
char x; // char turidagi o‘zgaruvchi e’loni;
char *y =new char; // ko‘rsatkich e’lon qilinib, unga dinamik ajratilgan xotiraning manzilini berish;
*y=‘b’; // y manziliga qiymat joylashtirish;
x =*y; // x o‘zgaruvchiga y manzili qiymatini berish;
Shuni aytib o‘tish kerakki, xotirani bitta joyining manzilini bir paytni o‘zida bir nechta va turli toifadagi ko‘rsatkichlarga berish mumkin va murojaat qilganda har xil qiymatlar qabul qilishi mumkin:
unsigned long int F=0Xcc77ffaa;
unsigned short int*a_int = (unsigned short int*) &F;
unsigned char* a_char=(unsigned char *) &F;
cout<<”*a_int =”<<*a_int<<” *a_char=”<
printf(“ | %x | %x | %x | “ , F, *a_int, *a_char);
Bu misolda quyidagi qiymatlar chop etiladi:
cc77ffaa | ffaa | aa |
Agar har xil turdagi ko‘rsatkichlarga qiymatlar berilsa, albatta turga keltirish amalidan foydalanish lozim:
int n=5;
float x=1.0;
int *pi=&n;
float *px=&x;
void *p;
int *r,*r1;
px=(float *)&n;
p=px;
r=(int *)px;
r1=pi;
Ko‘rsatgich turini void turiga keltirish kerak emas (amal ma’noga ega emas). Xuddi shunday, turlari bir xil bo‘lgan ko‘rsatkichlar uchun turni keltirish amalini bajarishga ehtiyoj yo‘q. Ko‘rsatkich ustidan bajariladigan arifmetik amallarda avtomatik ravishda turlarni o‘lchovi hisobga olinadi.
Arifmetik amallar faqat bir xil turdagi ko‘rsatkichlar ustidan bajariladi va asosan, massivlar uchun qo‘llaniladi.
Inkrement amali ko‘rsatkichni massivning keyingi elementiga, dekrement esa aksincha, oldingi element manziliga ko‘chiradi. Bunda ko‘rsatkichning qiymati (manzil) sizeof() qiymatiga o‘zgaradi. Agar ko‘rsatkichning qiymati k o‘zgarmas qiymatga oshirilsa yoki kamaytirilsa, u k* sizeof() qiymatiga o‘zgaradi.
Masalan:
short int *p=new short [5];
long * q = new long [5];
p++; // p qiymati 2 oshadi;
q++; // q qiymati 4 ga oshadi;
q+=3; // q qiymati 3*4=12 oshadi.
Ko‘rsatkichlarning ayirmasi deb, ular ayirmasini tur o‘lchami bo‘linishiga aytiladi. Ko‘rsatkichlarni o‘zaro qo‘shish mumkin emas.

Download 1.27 Mb.

Do'stlaringiz bilan baham:
1   ...   25   26   27   28   29   30   31   32   ...   45




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