Faktik parametrlarni funksiyaga qiymat bikan uzatish.
Funksiya chaqirilishida argument qiymat bilan uzatilganda, argument
yoki uning oʻrnidagi kelgan ifoda qiymati va boshqa argumentlarning
nusxasi (qiymatlari) stek xotirasiga yoziladi. Funksiya faqat shu
nusxalar bilan bajariladi, kerak boʻlsa bu nusxalarga oʻzgartirishlar
qilinishi mumkin, lekin bu oʻzgarishlar argumentning oʻziga taʻsir
qilmaydi, chunki funksiya oʻz ishini tugatishi bilan nusxalar oʻchiriladi
(stek tozalanadi).
Agar parametr adres bilan uzatilsa, stekka adres nusxasi yoziladi va
xuddi shu adres boʻyicha qiymatlar oʻqiladi (yoziladi). Funksiya oʻz
ishini tugatgandan keyin shu adres boʻyicha qilingan oʻzgarishlar
saqlanib qolinadi va bu qiymatlarni boshqa funksiyalar ishlatishi
mumkin.
Argument qiymat bilan uzatilishi uchun mos formal parametr
sifatida oʻzgaruvchini tipi va nomi yoziladi. Funksiya chaqirilishida
mos argument sifatida oʻzgaruvchining nomi yoki ifoda boʻlishi
mumkin.
Faktik parametr adres bilan uzatilganda unga mos keluvchi formal
parametrni ikki xil usul bilan yozish mumkin: koʻrsatkich orqali
yoki adresni oluvchi parametrlar orqali.
Misol:
#include
using namespace std;
void f(int, int*, int &);
int 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; }
|
Misol: ax2+bx+c=0 koʻrinishidagi kvadrat tenglama ildizlarini
funksiya parametrlari vositasida olish masalasi
#include "iostream"
#include "math.h"
using namespace std;
int kvadrat_ildiz(float a,float b,float c,
float & x1, float & x2){
float d; d=b*b-4*a*c;
if(d<0) return 0;
if(d==0){ x1=x2=-b/(2*a); return 1;
} else { x1=(-b+sqrt (d))/(2*a);
x2=(-b-sqrt(d))/(2*a); return 2;
}}
int main(){
float a,b,c,d,x1,x2;
cout<<"ax^2+bx+c=0 tenglama ildizini topish. ";
cout<<"\n a-koeffisiyentini kiriting="; cin>>a;
cout<<"\n b-koeffisiyentini kiriting="; cin>>b;
cout<<"\n c-koeffisiyentini kiriting="; cin>>c;
switch (kvadrat_ildiz(a, b,c, x1, x2))
{
case 0: cout<<" Tenglama haqiqiy ildizga ega
emas!";break;
case 1: cout<<" Tenglama yagona ildizga ega:";
cout<<"\n x="<
default: cout<<" Tenglama ikkita ildizga ega :
";
cout<<"\nx1="<
return 0;
}
|
Do'stlaringiz bilan baham: |