Funktsiyalar parametrlari xususiyatlari.
Funktsiya prototipida, yoki aniqlash sarlavxasida ko’rsatilgan parametrlar formal parametrlar deyiladi, yoki shunday parametrlar deyiladi , fuktsiyani chaqirishda ko’rsatilgan parametrlar faqtik parametrlar yoki argumentlar deyiladi,.
Funktsiyani chaqirishda argumentni o’rnida ifoda tursa uning qiymati xisoblanadi va stek xotirasiga natijani va barcha argumentlarni nusxasi yoziladi va bundan keyin funqtsiya faqat nusxasi bilan ish yuritadi.
Agar faqtik parametrni turi formal parametr turiga mos kelmasa u xolda kompilator xato deb xabar beradi.
Parametrlarni funktsiyaga ikki xil usul bilan uzatish mumkin : qiymat bilan yoki manzil bilan.
Qiymat bilan uzatilganda, stekga argumentni o’zi yoki xisoblangan ifodani qiymati nusxasi yoziladi, va funktsiya shu nusxa bilan ishlaydi uni kerak bo’lsa o’zgartirishi xam mumkin , lekin bu o’zgarishlar argumentni o’ziga ta’sir qilmaydi, va funktsiya ishini bajarib bulganda nusxalar o’chirib ketiladi ( stek tozalanadi)
Agar parametr manzil bilan uzatilsa , stekga manzilni nusxasi yoziladi va xuddi shu manzilgdan qiymatlar xam o’qilishi xam yozilishi mumkin, bu degan argumentni qiymati funqtsiya bajarilgandan so’ng o’zgarishi mumkin.
Parametr qiymat bilan uzatilishi uchun formal parametr sifatida oddiy o’zgaruvchini turi va nomi yoziladi. Funktsiyani chaqirishda argumentlar o’zgaruchini ismi yoki ifoda bo’lishi mumkin. Manzil bilan uzatilganda formal parametrni ikki xil usul bilan yozish mumkin: ko’rsatkich orqali yoki murojaat orqali. Ko’rsatkich orkali uzatilsa frmal parametrda turdan so’ng * belgisi yoziladi , mos argumentda esa o’zgaruchini manzili (& amal orqali) yoki massiv ismi, yoki funktsiya nomi bo’lishi mumkin, murojaat parametiri turdan keyin & belgisi yoziladi, argument o’rniga o’zgaruvchini ismi yoziladi.
Misol
#include
void f(int,int *,int & )
void main()
{
int i=1,j=2,k=3;
cout<
F(i,&j,k);
cout<}
Void f(int I;int *j; int &k)
{
i++;(*j)++;k++;*j=i+k;k=*j+I;
}
Natijada ekranga kuyidagi qiymatlar chiqadi:
2 3
6 8
Bu misolda birinchi parametr qiymat bilan uzatildi . Uni qiymati fuktsiya ichida o’zgarishi bilan natijada qiymati o’zgarmadi.
Iqqinchi parametr ko’rsatkich orqali manzil bilan uzatildi, manzilni uzatish uchun “&”-manzil olish amali ishlatildi, Ko’rsatkich parametrni qiymati bilan ishlash uchun “*”-qiymat olish amalni qo’llash kerak.
Uchinchi parametr murojaat orыali parametrni manzili uzatildi , bu xolda argument o’rnida o’zgaruvchini nomi, turadi va funqutsiya ichida qiymat olish amalni ishlatishni xojati yo’q, shuning uchun bu usul kulay va tushinarlidir.
Agar manzil bilan uzatilgan parametrni qiymati o’zgartirish kerak emas bo’lsa u xolda parametr const modifikator bilan yozilishi kerak:
F(int n,const char* str)
Agarda funktsiya chaqirishda argumentlar faqat ism bilan berilgan bulsa kelishilgan xolda ular qiymat bilan uzatilgan deb xisoblanadi, faqat massiv va funqtsiyalar manzil bilan uzatilgan deb xisoblanadi.
Do'stlaringiz bilan baham: |