Funzioni C ++
Una funzione è un gruppo di istruzioni che insieme eseguono un'attività. Ogni programma C ++ ha almeno una funzione, ovveromain()e tutti i programmi più banali possono definire funzioni aggiuntive.
Puoi dividere il tuo codice in funzioni separate. Come suddividere il codice tra le diverse funzioni dipende da te, ma logicamente la divisione di solito è tale che ogni funzione esegue un compito specifico.
Una funzione declarationindica al compilatore il nome di una funzione, il tipo restituito ei parametri. Una funzionedefinition fornisce il corpo effettivo della funzione.
La libreria standard C ++ fornisce numerose funzioni incorporate che il programma può chiamare. Ad esempio, functionstrcat() per concatenare due stringhe, funzione memcpy() per copiare una posizione di memoria in un'altra posizione e molte altre funzioni.
Una funzione è nota con vari nomi come un metodo, una sottoprogramma o una procedura ecc.
Definizione di una funzione
La forma generale di una definizione di funzione C ++ è la seguente:
return_type function_name( parameter list ) {
body of the function
}
Una definizione di funzione C ++ consiste in un'intestazione di funzione e un corpo di funzione. Ecco tutte le parti di una funzione:
Return Type- Una funzione può restituire un valore. Ilreturn_typeè il tipo di dati del valore restituito dalla funzione. Alcune funzioni eseguono le operazioni desiderate senza restituire un valore. In questo caso, return_type è la parola chiavevoid.
Function Name- Questo è il nome effettivo della funzione. Il nome della funzione e l'elenco dei parametri insieme costituiscono la firma della funzione.
Parameters- Un parametro è come un segnaposto. Quando viene richiamata una funzione, si passa un valore al parametro. Questo valore viene indicato come parametro o argomento effettivo. L'elenco dei parametri si riferisce al tipo, all'ordine e al numero dei parametri di una funzione. I parametri sono opzionali; ovvero, una funzione non può contenere parametri.
Function Body - Il corpo della funzione contiene una raccolta di istruzioni che definiscono cosa fa la funzione.
Esempio
Di seguito è riportato il codice sorgente di una funzione chiamata max(). Questa funzione accetta due parametri num1 e num2 e restituisce il più grande di entrambi -
// function returning the max between two numbers
int max(int num1, int num2) {
// local variable declaration
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
Dichiarazioni di funzione
Una funzione declarationindica al compilatore il nome di una funzione e come chiamare la funzione. Il corpo effettivo della funzione può essere definito separatamente.
Una dichiarazione di funzione ha le seguenti parti:
return_type function_name( parameter list );
Per la funzione max () definita sopra, di seguito è riportata la dichiarazione della funzione:
int max(int num1, int num2);
I nomi dei parametri non sono importanti nella dichiarazione della funzione, solo il loro tipo è richiesto, quindi anche la seguente è una dichiarazione valida:
int max(int, int);
La dichiarazione di funzione è richiesta quando si definisce una funzione in un file di origine e si chiama quella funzione in un altro file. In tal caso, è necessario dichiarare la funzione all'inizio del file che chiama la funzione.
Chiamare una funzione
Durante la creazione di una funzione C ++, dai una definizione di ciò che la funzione deve fare. Per usare una funzione, dovrai chiamare o invocare quella funzione.
Quando un programma chiama una funzione, il controllo del programma viene trasferito alla funzione chiamata. Una funzione chiamata esegue un'attività definita e quando viene eseguita la sua istruzione return o quando viene raggiunta la parentesi graffa di chiusura di fine funzione, restituisce il controllo del programma al programma principale.
Per chiamare una funzione, è sufficiente passare i parametri richiesti insieme al nome della funzione e, se la funzione restituisce un valore, è possibile memorizzare il valore restituito. Ad esempio:
#include <iostream>
using namespace std;
// function declaration
int max(int num1, int num2);
int main () {
// local variable declaration:
int a = 100;
int b = 200;
int ret;
// calling a function to get max value.
ret = max(a, b);
cout << "Max value is : " << ret << endl;
return 0;
}
// function returning the max between two numbers
int max(int num1, int num2) {
// local variable declaration
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
Ho mantenuto la funzione max () insieme alla funzione main () e ho compilato il codice sorgente. Durante l'esecuzione dell'eseguibile finale, produrrebbe il seguente risultato:
Max value is : 200
Argomenti della funzione
Se una funzione deve utilizzare argomenti, deve dichiarare variabili che accettano i valori degli argomenti. Queste variabili sono chiamateformal parameters della funzione.
I parametri formali si comportano come le altre variabili locali all'interno della funzione e vengono creati all'ingresso nella funzione e distrutti all'uscita.
Durante la chiamata a una funzione, ci sono due modi in cui gli argomenti possono essere passati a una funzione:
Suor n | Tipo di chiamata e descrizione |
---|---|
1 | Chiama per valore
Questo metodo copia il valore effettivo di un argomento nel parametro formale della funzione. In questo caso, le modifiche apportate al parametro all'interno della funzione non hanno effetto sull'argomento. |
2 | Call by Pointer
Questo metodo copia l'indirizzo di un argomento nel parametro formale. All'interno della funzione, l'indirizzo viene utilizzato per accedere all'argomento effettivo utilizzato nella chiamata. Ciò significa che le modifiche apportate al parametro influiscono sull'argomento. |
3 | Chiama per riferimento
Questo metodo copia il riferimento di un argomento nel parametro formale. All'interno della funzione, il riferimento viene utilizzato per accedere all'argomento effettivo utilizzato nella chiamata. Ciò significa che le modifiche apportate al parametro influiscono sull'argomento. |
Per impostazione predefinita, C ++ utilizza call by valueper passare argomenti. In generale, questo significa che il codice all'interno di una funzione non può alterare gli argomenti usati per chiamare la funzione e l'esempio sopra menzionato mentre si chiama la funzione max () ha usato lo stesso metodo.
Valori predefiniti per i parametri
Quando si definisce una funzione, è possibile specificare un valore predefinito per ciascuno degli ultimi parametri. Questo valore verrà utilizzato se l'argomento corrispondente viene lasciato vuoto durante la chiamata alla funzione.
Questa operazione viene eseguita utilizzando l'operatore di assegnazione e assegnando valori per gli argomenti nella definizione della funzione. Se un valore per quel parametro non viene passato quando viene chiamata la funzione, viene utilizzato il valore dato predefinito, ma se viene specificato un valore, questo valore predefinito viene ignorato e viene utilizzato invece il valore passato. Considera il seguente esempio:
#include <iostream>
using namespace std;
int sum(int a, int b = 20) {
int result;
result = a + b;
return (result);
}
int main () {
// local variable declaration:
int a = 100;
int b = 200;
int result;
// calling a function to add the values.
result = sum(a, b);
cout << "Total value is :" << result << endl;
// calling a function again as follows.
result = sum(a);
cout << "Total value is :" << result << endl;
return 0;
}
Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:
Total value is :300
Total value is :120