Xo’sh, yuqorida qiymatlarni xotirada saqlanish yo’li haqida ozroq tushunchaga ega bo’ldik deb o’ylayman. Demak qiymat xotiraning biror yacheykasiga yozilsa, o’sha yacheykaga murojaat qilib uni o’zgartirish orqali o’zgaruvchimizni o’zgartirsak bo’ladimi? Albatta, o’zgaruvchining manzilini olishimiz uchun o’zgaruvchi nomidan oldin &(ampersanta) belgisini ishlatishimiz kerak. Ikkita o’zgaruvchimizni bitta yacheykaga bog’lash orqali yuqoridagi savolga javob olamiz:
Sintaksis jihatdan kodimiz quyidagicha bo’ladi:
int a = 7;
int &b = a;
//yoki qisqarog’i:
//int a = 7, &b = a; albatta bunda yuqoridagi ikki o’zgaruvchidan biri o’zgarishi 2-siga ham ta’sirini o’tkazadi. Bu orqali masalan biz ikkita o’zgaruvchining qiymatlarini almashtiradigan swap funksiyasini tuza olamiz:
void swap(int &x, int &y)
{
x += y;
y = x — y;
x -= y;
}
int main(){
int a = 5, b = 7;
swap(a, b);
cout<return 0;
} Havolalar bilan ishlashda yana bir qulay tarafi shunda-ki, u bilan biz resurslarimizni tejab qolishimiz mumkin. Tasavvur qiling, bizda shunday katta ma’lumotlar to’plangan class bor, uni funksiyaga parametr sifatida berishimiz kerak, funksiyamiz uni ichidagilarini ekranga chiqarib beradi. Agar oddiy tarzda bersak, xotirada yana bir xuddi shunday ma’lumotlarni o’zida jamlagan class uchun joy ajratiladi, bu esa protsessor vaqti va xotiradagi joy uvol bo’ladi degani. Biz uni havola qilib bersak, uni yangidan xotiraga joylash o’rniga tayyor manzilini olamiz, const kalit so’zi yordamida uni funksiya ichidagi o’zgarishlardan saqlab qolamiz:
void chopEt(const &MyType a)//kodlar Yoki masalan massivga qiymat kiritishni soddalashtirib+yengillashtirib olishimiz mumkin:
int a[10];
for(int &x: a) cin>>a; Menimcha havola haqida tushunib oldingiz. Endi dinamik obyektlar bilan ishlash — ko’rsatkichlar haqida suhbatni davom ettirsak.