Vraag-door-verwijzing
Een functie vraag-door-verwijzing maken, in plaats van het overgaan van de variabele zelf, gaat het adres van de variabele over. Het adres van de variabele kan door gebruiken & exploitant worden genomen. De volgende vraag een ruilmiddelfunctie die het adres van variabelen in plaats van de daadwerkelijke waarden overgaat.
swap(&x, &y);
Dereferencing
Het probleem dat wij nu zijn dat het functieruilmiddel het adres eerder dan de variabele hebben gehad is overgegaan, zo wij nodig hebben aan dereference de variabelen zodat wij bekijken de daadwerkelijke waarden eerder dan de adressen van de variabelen om hen te ruilen.
Dereferencing wordt bereikt in C door de wijzer(*) aantekening te gebruiken. In eenvoudige termen, dit plaatsen * vóór elke variabele alvorens het betekent te gebruiken opdat het naar de waarde van de variabele eerder dan zijn adres verwijst. Het volgende programma illustreert over:gaan-door-verwijzing naar ruilmiddel twee waarden.
#include <stdio.h>
void swap(int *x, int *y);
int main()
{
int x=6, y=10;
printf("Before the function swap, x = %d and y =
%d\n\n", x, y);
swap(&x, &y);
printf("After the function swap, x = %d and y =
%d\n\n", x, y);
return 0;
}
void swap(int *x, int *y)
{
int temp = *x;
*x = *y;
*y = temp;
}
Zie de output van het programma:
Before the function swap, x = 6 and y = 10
After the function swap, x = 10 and y = 6 |
De functies kunnen recursief zijn dat een functie kan roepen is. Elke vraag aan zich vereist dat de huidige staat van de functie op de stapel wordt geduwd. Het is belangrijk om dit feit te herinneren aangezien het gemakkelijk is om een stapeloverstroming tot stand te brengen, d.w.z. heeft de stapel uit ruimte gelopen om meer gegevens te plaatsen.
Het volgende voorbeeld berekent Factor van een aantal gebruikend terugkeer. Factor is een aantal dat met elk ander geheel onder zich, onderaan aan 1 wordt vermenigvuldigd. Bijvoorbeeld, is factor van aantal 6:
Factorial 6 = 6 * 5 * 4 * 3 * 2 * 1
Daarom is factor van 6 720. Men kan zien van het bovengenoemde voorbeeld dat factor 6 = 6 * factor 5. Men kan zien van het bovengenoemde voorbeeld dat factor 6 = 6 * factor 5. Op dezelfde manier factor 5 = 5 * factor 4, enz. zo.
Het volgende is de algemene regel om factoraantallen te berekenen.
factorial(n) = n * factorial(n-1)
De bovengenoemde regel eindigt wanneer n = 1, aangezien factor van 1 1. is proberen om het met behulp van voorbeeld beter te begrijpen:
#include <stdio.h>
long int factorial(int num);
int main()
{
int num;
long int f;
printf("Enter a number: ");
scanf("%d", &num);
f = factorial(num);
printf("factorial of %d is %ld\n", num, f);
return 0;
}
long int factorial(int num)
{
if (num == 1)
return 1;
else
return num * factorial(num-1);
}
Zie de output van de uitvoering van dit programma:
Enter a number: 7
factorial of 7 is 5040 |
|