C Adressen en verwijzingen naar functies doorgeven

In deze tutorial leer je om adressen en verwijzingen door te geven als argumenten voor functies met behulp van voorbeelden.

Bij C-programmering is het ook mogelijk om adressen door te geven als argumenten voor functies.

Om deze adressen in de functiedefinitie te accepteren, kunnen we pointers gebruiken. Het is omdat pointers worden gebruikt om adressen op te slaan. Laten we een voorbeeld nemen:

Voorbeeld: adressen doorgeven aan functies

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

Wanneer u het programma uitvoert, is de uitvoer:

 num1 = 10 num2 = 5

Het adres van num1 en num2 wordt doorgegeven aan de swap()functie met swap(&num1, &num2);.

Pointers n1 en n2 accepteren deze argumenten in de functiedefinitie.

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

Wanneer * n1 en * n2 binnen de swap()functie worden gewijzigd , worden num1 en num2 binnen de functie main () ook gewijzigd.

Binnen de swap()functie, *n1en *n2verwisseld. Daarom worden num1 en num2 ook verwisseld.

Merk op dat swap()dit niets retourneert; het retourtype is void.

Voorbeeld 2: verwijzingen naar functies doorgeven

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

Hier is de waarde opgeslagen op p *p,, aanvankelijk 10.

Vervolgens hebben we de pointer p doorgegeven aan de addOne()functie. De ptr-pointer krijgt dit adres in de addOne()functie.

Binnen de functie hebben we de waarde opgeslagen bij ptr met 1 verhoogd met (*ptr)++;. Omdat ptr en p pointers beide hetzelfde adres hebben, is *pinside main()ook 11.

Interessante artikelen...