C Predajte adresy a ukazovatele na funkcie

V tomto tutoriále sa naučíte príklady odovzdávať adresy a ukazovatele ako argumenty funkciám.

V programovaní C je tiež možné odovzdať adresy ako argumenty funkciám.

Na prijatie týchto adries v definícii funkcie môžeme použiť ukazovatele. Je to preto, lebo ukazovatele sa používajú na ukladanie adries. Uveďme si príklad:

Príklad: Odošlite adresy funkciám

 #include void swap(int *n1, int *n2); int main() ( int num1 = 5, num2 = 10; // address of num1 and num2 is passed swap( &num1, &num2); printf("num1 = %d", num1); printf("num2 = %d", num2); return 0; ) void swap(int* n1, int* n2) ( int temp; temp = *n1; *n1 = *n2; *n2 = temp; )

Po spustení programu bude výstup:

 num1 = 10 num2 = 5

Adresa num1 a num2 sa odovzdáva swap()funkcii pomocou swap(&num1, &num2);.

Ukazovatele n1 a n2 prijímajú tieto argumenty v definícii funkcie.

 void swap(int* n1, int* n2) (… ) 

Keď sa vo swap()funkcii zmenia * n1 a * n2, zmení sa tiež num1 a num2 vo vnútri funkcie main ().

Vo vnútri swap()funkcie *n1a *n2vymenený. Preto sa tiež zamenia čísla num1 a num2.

Všimnite si, že swap()nič nevracia; jeho návratový typ je void.

Príklad 2: Prenos ukazovateľov na funkcie

 #include void addOne(int* ptr) ( (*ptr)++; // adding 1 to *ptr ) int main() ( int* p, i = 10; p = &i; addOne(p); printf("%d", *p); // 11 return 0; )

Tu je hodnota uložená na p, *p10 pôvodne.

Potom sme odovzdali ukazovateľ p addOne()funkcii. Ukazovateľ ptr získa túto adresu vo addOne()funkcii.

Vo vnútri funkcie sme zvýšili hodnotu uloženú v ptr o 1 pomocou (*ptr)++;. Pretože ukazovatele ptr aj p majú rovnakú adresu, *pvo vnútri main()je tiež 11.

Zaujímavé články...