Denomin-da-riferimento
Fare un denomin-da-riferimento di funzione, invece di passare la variabile in se, passa l'indirizzo della variabile. L'indirizzo della variabile può essere preso usando & l'operatore. Le seguenti chiamate una funzione di scambio che passa l'indirizzo delle variabili anziché i valori reali.
swap(&x, &y);
Dereferencing
Il problema che abbiamo ora è che lo scambio di funzione è stato passato all'indirizzo piuttosto che alla variabile, in modo da dobbiamo dereference le variabili in modo che stiamo guardando i valori reali piuttosto che gli indirizzi delle variabili per scambiarli.
Dereferencing è realizzato in C usando la notazione dell'indicatore (*). Nei termini semplici, questo significa la disposizione della a * prima di ciascuno variabile prima di usando affinché si riferisce al valore della variabile piuttosto che al relativo indirizzo. Il seguente programma illustra il pass-da-riferimento per scambiare due valori.
#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;
}
Vediamo l'uscita del programma:
Before the function swap, x = 6 and y = 10
After the function swap, x = 10 and y = 6 |
Le funzioni possono essere ricorsive che è una funzione può denominarsi. Ogni chiamata a se richiede che la corrente dichiara della funzione è spinta sulla pila. È importante ricordarsi di questo fatto poichè è facile da generare un trabocco di pila, cioè la pila ha fatto funzionare da spazio al posto altri dati.
Il seguente esempio calcola il fattoriale di un numero usando la ricorrenza. Un fattoriale è un numero moltiplicato da ogni altro numero intero sotto se, giù a 1. Per esempio, il fattoriale del numero 6 è:
Factorial 6 = 6 * 5 * 4 * 3 * 2 * 1
Di conseguenza il fattoriale di 6 è 720. Può essere visto dal suddetto esempio quei 6 fattoriali = 6 * 5 fattoriali. Similmente, 5 fattoriali = 5 * 4 fattoriali e così via.
Ciò che segue è la regola generale per la calcolazione dei numeri fattoriali.
factorial(n) = n * factorial(n-1)
La suddetta regola termina quando la n = 1, come il fattoriale di 1 è 1. Proviamo a capirla più meglio con l'aiuto dell'esempio:
#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);
}
Vediamo l'uscita dell'esecuzione di questo programma:
Enter a number: 7
factorial of 7 is 5040 |
|