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 *n1
a *n2
vymě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, *p
uvnitř main()
je také 11.