Xotira manzili — C++’ni boshqa ko’plab tillardan ajratib turadigan mavzu. Har bir o’zgaruvchi kompyuter xotirasining ma’lum bir joyida saqlanadi va bu joyning o’z manzili (adresi) bor. C++ sizga shu manzil bilan bevosita ishlash imkonini beradi — bu tilning kuchi va mas’uliyatining manbai.
Xotira manzili — o’zgaruvchi saqlanadigan xotira katakchasining raqamli adresi. C++’da uni
&(adres) operatori orqali olish mumkin.
& operatori bilan manzilni olish
Har qanday o’zgaruvchining xotiradagi manzilini & operatori beradi:
#include <iostream>
using namespace std;
int main() {
int yosh = 26;
cout << "Qiymati: " << yosh << endl;
cout << "Manzili: " << &yosh << endl;
return 0;
}
Qiymati: 26
Manzili: 0x7ffee3b4c9ac
yosh — qiymatni (26), &yosh — o’sha qiymat saqlanayotgan xotira manzilini beradi. Manzil odatda o’n oltilik (hex) ko’rinishda, 0x bilan chiqadi. Bu raqam har ishga tushirishda o’zgarishi mumkin — bu normal holat.
Nima uchun manzil kerak?
Manzil tushunchasi bir necha muhim vazifa uchun asos bo’ladi. Ularni jadvalda ko’ramiz:
| Vazifa | Manzil qanday yordam beradi |
|---|---|
| Ko’rsatkichlar | manzilni saqlab, o’zgaruvchiga bilvosita murojaat |
| Funksiyaga uzatish | katta ma’lumotni nusxalamasdan uzatish |
| Dinamik xotira | ishlash vaqtida xotira ajratish |
Turli o’zgaruvchilar — turli manzillar
Har bir o’zgaruvchi xotirada o’z alohida joyini egallaydi, shuning uchun manzillari ham har xil:
#include <iostream>
using namespace std;
int main() {
int a = 10;
int b = 20;
cout << "a manzili: " << &a << endl;
cout << "b manzili: " << &b << endl;
return 0;
}
a manzili: 0x7ffd5c2a1b3c
b manzili: 0x7ffd5c2a1b38
Ikki manzil bir-biriga yaqin, ammo bir xil emas. Xotirani shunday ko’rish — C++ dasturchisining “past darajali” tafakkurini shakllantiradi.
Massiv va manzil bog’liqligi
Massiv elementlari xotirada ketma-ket joylashadi. Buni manzillar orqali yaqqol ko’rish mumkin:
#include <iostream>
using namespace std;
int main() {
int arr[3] = {5, 10, 15};
cout << "arr[0] manzili: " << &arr[0] << endl;
cout << "arr[1] manzili: " << &arr[1] << endl;
return 0;
}
arr[0] manzili: 0x7ffd12a4b0
arr[1] manzili: 0x7ffd12a4b4
E’tibor bering: ikki manzil orasidagi farq aynan 4 bayt — bu bitta int ning hajmi. Demak, massiv elementlari xotirada zich va tartibli joylashgan. Aynan shu tuzilish massivni tez ishlaydigan qiladi.
Xulosa
Bu bo’limda xotira manzili tushunchasini, & operatori bilan manzilni olishni, uning ahamiyatini va massiv elementlarining ketma-ket joylashuvini ko’rib chiqdik. Manzilni tushunish — keyingi mavzu, ko’rsatkichlar uchun poydevor. Keyingi darsda aynan ko’rsatkichlarga chuqur kirib boramiz.