C Předejte adresy a odkazy na funkce

V tomto kurzu se naučíte předávat adresy a ukazatele jako argumenty funkcím pomocí příkladů.

V programování v C je také možné předat adresy jako argumenty funkcím.

K přijetí těchto adres v definici funkce můžeme použít ukazatele. Je to proto, že ukazatele se používají k ukládání adres. Vezměme si příklad:

Příklad: Předání adres funkcí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; )

Když spustíte program, výstup bude:

 num1 = 10 num2 = 5

Funkce num1 a num2 jsou předány swap()funkci pomocí swap(&num1, &num2);.

Ukazatele n1 a n2 přijímají tyto argumenty v definici funkce.

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

Když se * n1 a * n2 změní uvnitř swap()funkce, změní se také num1 a num2 uvnitř funkce main ().

Uvnitř swap()funkce *n1a *n2vyměnil. Proto jsou také vyměněny num1 a num2.

Všimněte si, že swap()nic nevrací; jeho návratový typ je void.

Příklad 2: Předávání ukazatelů funkcím

 #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; )

Zde je hodnota uložená na p *p,, původně 10.

Poté jsme předali ukazatel p do addOne()funkce. Ukazatel ptr získá tuto adresu ve addOne()funkci.

Uvnitř funkce jsme zvýšili hodnotu uloženou v ptr o 1 pomocí (*ptr)++;. Protože ukazatele ptr a p mají obě stejnou adresu, *puvnitř main()je také 11.

Zajímavé články...