C++ dasturlash tili Ko'rsatgichlar, referatlar va dinamik xotira ajratish


Bilvosita yoki dereferencing operatori (


Download 267.5 Kb.
bet3/14
Sana20.06.2023
Hajmi267.5 Kb.
#1630767
TuriReferat
1   2   3   4   5   6   7   8   9   ...   14
Bog'liq
Язык программирования C

1.4 Bilvosita yoki dereferencing operatori (*)
Bilvosita operator (yoki dereference operatori) () ko'rsatgichda ishlaydi va ko'rsatgich o'zgaruvchisida saqlanadigan manzilda saqlangan qiymatni qaytaradi. Masalan, agar yordamida "ko'rsatuvchi" qaytaruvchi ko'rsatkich bo'lsa . *pNumberint*pNumberintpNumber
Misol uchun
int number = 88;
int * pNumber = &number; // Declare and assign the address of variable number to pointer pNumber (0x22ccec)
cout << pNumber<< endl; // Print the content of the pointer variable, which contain an address (0x22ccec)
cout << *pNumber << endl; // Print the value "pointed to" by the pointer, which is an int (88)
*pNumber = 99; // Assign a value to where the pointer is pointed to, NOT to the pointer variable
cout << *pNumber << endl; // Print the new value "pointed to" by the pointer (99)
cout << number << endl; // The value of variable number changes as well (99)
E'tibor bering, unda xotira manzilining joylashuvi saqlanadi, holbuki, u ko'rsatgich o'zgaruvchisida saqlanayotgan manzilda saqlanayotgan qiymatni yoki ko'rsatgich ko'rsatilgan qiymatni anglatadi. pNumber*pNumber
Figurada ko'rsatilganidek, biror o'zgaruvchi (masalan, ) to'g'ridan-to'g'ri qiymatni anglatadi, ko'rsatgich esa bilvosita o'zi saqlaydigan xotira adresi orqali qiymatni anglatadi. Ko'rsatgich orqali biror qiymatga bilvosita referat bilvosita yoki dereferenced deyiladi. raqam
Bilvosita operator () ham RHS () va ham LHS () tayinlash operatorlarida qo'llaniladi. * temp = *pNumber*pNumber = 99
E'tibor bering, bu simvol deklarant gapida va ifodada boshqacha ma'noga ega. U deklarantda qo'llanilganda (masalan, ), keyingi nom ko'rsatgich o'zgaruvchisi degan ma'noni anglatadi. Holbuki, u biror ifodada qo'llanilganda (masalan, ), ko'rsatgich o'zgaruvchisi tomonidan ko'rsatilgan qiymatni anglatadi. * int * pNumber*pNumber = 99; temp << *pNumber;
Ko'rsatkich ham turiga ega
Ko'rsatgich e'lon qilishda ko'rsatilgan turi (u ko'rsatadigan qiymat) bilan bog'liq. Ko'rsatgichda faqat e'lon qilingan turning manzili bo'lishi mumkin; Unda boshqa turdagi manzil bo'lishi mumkin emas.
int i = 88;
ikki d = 55,66;
int * iPtr = &i; int qiymatini ko'rsatuvchi int ko'rsatgichi
double * dPtr = &d; Ikkilik qiymatni ko'rsatuvchi ikki ko'rsatgich
iPtr = &d; / XATO, har xil turdagi manzilni ushlab bo'lmaydi
dPtr = &i; • XATO
iPtr = i; / XATO, ko'rsatgich int manzilini ushlab turadi, NOT int qiymati
int j = 99;
iPtr = &j; / Ko'rsatgichda saqlangan manzilni o'zgartirish mumkin
Namuna
/* Test ko'rsatkich deklaratsiyasi va boshlang'ich (TestPointerInit.cpp) */
#include
ism bo'shlig'i std yordamida;
int main() {
int soni = 88; – Int o'zgaruvchisini e'lon qilish va boshlang'ich qiymatni tayinlash
int * pNumber; – Int (yoki int ko'rsatgich)ni ko'rsatuvchi ko'rsatgich o'zgaruvchisini e'lon qilish
pNumber = & soni; / o'zgaruvchi raqamining manzilini ko'rsatgich pNumberga tayinlash
cout << pNumber << endl; / PNumber (0x22ccf0) ning tarkibini chop etish
cout << & soni << soni; / Sonning chop etish manzili (0x22ccf0)
cout << *pNumber << endl; pNumber tomonidan ko'rsatilgan qiymatni bosib chiqarish (88)
cout << soni << soni; / Sonining chop etish qiymati (88)
*pNumber = 99; pNumber tomonidan ko'rsatilgan qiymatni qayta tayinlash
cout << pNumber << endl; / PNumber (0x22ccf0) ning tarkibini chop etish
cout << & soni << soni; / Sonning chop etish manzili (0x22ccf0)
cout << *pNumber << endl; pNumber tomonidan ko'rsatilgan qiymatni bosib chiqarish (99)
cout << soni << soni; / Sonning bosma qiymati (99)
Raqam qiymati ko'rsatgich orqali o'zgaradi
cout << &pNumber << endl; / Ko'rsatgich o'zgaruvchisi pNumber manzilini bosib chiqarish (0x22ccec)
}
Izohlar: Siz oladigan manzillarning qiymatlari meniki bilan bir xil bo'lishi ehtimoldan xoli emas. OS dasturni belgilangan xotira joylariga emas, balki mavjud bo'sh xotira joylariga yuklaydi.

Download 267.5 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   ...   14




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