Darsliklar C++ Xotira Manzili

C++ C++ Xotira Manzili

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 manzilio’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.