Funksiya parametrlari — funksiyaga tashqaridan ma’lumot uzatish vositasi. Parametrsiz funksiya doim bir xil ish qiladi; parametr bilan esa u har xil kirish uchun har xil natija beradi. C++’da parametr uzatishning bir necha usuli bor va ular orasidagi farq tilning eng muhim tushunchalaridan biridir.
Parametr — funksiya e’lonida ko’rsatilgan, chaqiruvda beriladigan qiymatni qabul qiladigan o’zgaruvchi. Chaqiruvda beriladigan haqiqiy qiymat argument deb ataladi.
Qiymat bo’yicha uzatish (pass by value)
Standart holatda parametr nusxa sifatida uzatiladi. Ya’ni funksiya ichida qiymat o’zgarsa, tashqaridagi asl o’zgaruvchi o’zgarmaydi:
#include <iostream>
using namespace std;
void oshir(int son) {
son = son + 10; // faqat nusxa o'zgaradi
}
int main() {
int a = 5;
oshir(a);
cout << a << endl; // a o'zgarmaydi
return 0;
}
5
a o’zgarmadi, chunki funksiyaga uning nusxasi uzatildi. Bu xavfsiz, ammo katta ma’lumotlarda nusxalash resurs talab qiladi.
Manzil bo’yicha uzatish (pass by reference)
Agar funksiya asl o’zgaruvchini o’zgartirishi kerak bo’lsa, parametrni & (reference) bilan uzatamiz:
#include <iostream>
using namespace std;
void oshir(int& son) {
son = son + 10; // asl o'zgaruvchini o'zgartiradi
}
int main() {
int a = 5;
oshir(a);
cout << a << endl; // endi a o'zgardi
return 0;
}
15
Bitta & belgisi hamma narsani o’zgartirdi: endi son — a ning o’zi (nusxasi emas), shuning uchun o’zgarish tashqarida ham saqlanib qoldi. Bu, ayniqsa, funksiya bir necha qiymatni “qaytarishi” kerak bo’lganda foydali.
Uzatish usullari
Ikki asosiy usulni jadvalda solishtiramiz:
| Usul | Yozilishi | Asl qiymatga ta’sir | Qachon |
|---|---|---|---|
| Qiymat bo’yicha | int son |
ta’sir qilmaydi | kichik, himoyalangan ma’lumot |
| Manzil bo’yicha | int& son |
o’zgartiradi | asl o’zgarishi kerak / katta ma’lumot |
Standart (default) parametr
Parametrga oldindan qiymat berish mumkin. Agar chaqiruvda u berilmasa, standart qiymat ishlatiladi:
#include <iostream>
using namespace std;
void salomlash(string ism = "mehmon") {
cout << "Salom, " << ism << "!" << endl;
}
int main() {
salomlash();
salomlash("Farrux");
return 0;
}
Salom, mehmon!
Salom, Farrux!
Birinchi chaqiruvda argument berilmagani uchun standart "mehmon" ishlatildi. Standart parametrlar funksiyani moslashuvchan qiladi.
Xulosa
Bu bo’limda funksiyaga qiymat bo’yicha va manzil bo’yicha (&) parametr uzatishni, ularning asl o’zgaruvchiga ta’siridagi farqni va standart parametrlarni ko’rib chiqdik. Reference bilan uzatish — C++’ning kuchli va tez vositasi. Keyingi darsda obyektga yo’naltirilgan dasturlash (OOP) ga kirib boramiz.