Сайфиев ж. Ф. С++ тилига кириш услубий қўлланма


swap() функциясига параметр сифатида кўрсатгичларни узатиш


Download 3.45 Mb.
bet73/79
Sana18.10.2023
Hajmi3.45 Mb.
#1707139
1   ...   69   70   71   72   73   74   75   76   ...   79
Bog'liq
cpp buxoro

swap() функциясига параметр сифатида кўрсатгичларни узатиш.


Функцияга аргумент сифатида кўрсаткични узатишда, биз объектнинг адресини функцияга берамиз ва функция бу орқали берилган адресдаги қийматни ўзгартириши мумкин, яъни функция бевосита ўзига параметр қилиб узатиладиган объект устида амаллар бажаради. swap() функцияси берилган ўзгарувчиларни реал қийматларини ўзгартириши учун, уни шундай эълон қилиш лозимки, функция иккита бутун қийматга кўрсатгични узатиши мумкин бўлсин. Функция ичида кўрсаткич адресидаги қийматларни олиш операторидан фойдаланиб х ва у узгарувчиларнинг реал қийматларини алмаштирамиз. Бу ғоя 9.6. – листингда намойиш қилинган.


9.6.- листинг. Кўрсатгич ёрдамида аргументларни мурожаат кўринишида узатиш.
//9.6. – листинг.
Аргументни ҳавола кўринишида узатилиши
# include
void swap(int * x,int *y );
int main()
{
x= 5, y = 10;
cout<<“Main.Before Swap, x:”<swap ( &x, &y );
cout<<“Main.After Swap,x:”<return 0 ;
}
void swap ( int * px, int * py )
{
int temp ;
cout<<“Swap.BeforeSwap,*px:”<<*px<<“*py:”<<*py<<“\n”;
temp = *px ;
px = *py ;
*py = temp;
cout<<“Swap.AfterSwap,*px:”<<*px<<“*py:”<<*py<<“\n;
};
НАТИЖА:

Main.Before Swap x : 5 y : 10


Swap.Before Swap *px : 5 *py : 10
Swap.After Swap *px : 10 *py : 5
Swap.After Swap px : 10 y : 5
ТАҲЛИЛ
Бу листингда биз кўзлаган мақсадимизга эришдик. 4–сатрда swap() функцияси прототипи қуйидагича ўзгартириш киритилди. Параметр сифатида int типидаги ўзгарувчилар ўрнига int типидаги қийматга кўрсаткичлар аниқланди. 9 – cатрда swap() функцияси чақирилганда унга параметр сифатида х ва y ўзгарувчиларнинг адреси берилди.
15–сатрда swap() функцияси учун локал бўлган temp ўзгарувчиси эълон қилинди. Уни кўрсаткич деб эълон қилиш шарт эмас, чунки бу ўзгарувчида фақатгина функцияни ҳаёти давомида *px (яъни, х ўзгарувчиси қиймати) сақланади. Функция ишини тугатгандан кейин temp ўзгарувчиси керак бўлмайди.
17 – сатрда temp ўзгарувчисига px адресида сақланувчи қиймат ўзлаштирилади. 18 – сатрда px адресда сақланувчи қийматга, py адресли ячейкадаги қиймат ўзлаштирилади. 19 – сатрда эса py адресли ячейкага temp ўзгарувчиси қиймати ўзлаштирилади.
Натижада адреслари swap() функциясига берилган ўзгарувчилар қийматлари мувофаққиятли алмаштирилди.

Download 3.45 Mb.

Do'stlaringiz bilan baham:
1   ...   69   70   71   72   73   74   75   76   ...   79




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling