Tutto quello che c'è da sapere sulle funzioni in C?



Questo articolo ti introdurrà un concetto semplice ma molto fondamentale e importante che è Funzioni in C e lo seguirà con una dimostrazione.

Questo articolo ti presenterà un semplice ma molto fondamentale e importante concetto che è Funzioni in C e seguirlo con una dimostrazione. I seguenti suggerimenti saranno trattati in questo articolo,

Le funzioni sono elementi costitutivi di qualsiasi linguaggio di programmazione. In parole semplici, funziona in un insieme di istruzioni, che accetta input, esegue un'attività specifica e quindi restituisce l'output.
L'ideologia alla base della funzione di creazione è quella di legare insieme una serie di dichiarazioni correlate che eseguono un compito specifico. In questo modo, non è necessario scrivere più volte lo stesso codice per diversi set di input. Devi solo chiamare la funzione per diversi input, eseguirà l'attività specificata per l'input dato e restituirà l'output. Puoi chiamare la funzione tutte le volte che vuoi. In questo blog, impareremo ogni sfumatura sulle funzioni nel linguaggio di programmazione C.





Cominciamo con la domanda fondamentale.

Cosa sono le funzioni in C?

Le funzioni sono le stesse in C di qualsiasi altro linguaggio di programmazione. È un insieme di codici che si legano insieme per eseguire un'attività specifica. L'insieme di codice da eseguire è specificato tra parentesi graffe, cioè '{}'.



Prima di imparare a scrivere una funzione in C, vediamo prima quali sono i vantaggi.

Vantaggi delle funzioni in C

I vantaggi delle funzioni sono comuni a tutti i linguaggi di programmazione.
L'idea principale alla base della funzione è ridurre la ridondanza nel codice. Supponi di avere una funzionalità che deve essere eseguita più volte in un programma, quindi invece di scriverla più volte, puoi creare una funzione per quell'attività e chiamarla tutte le volte che vuoi. Un altro vantaggio nascosto è che, se la logica della tua funzionalità cambia in seguito, non devi andare avanti e cambiarla in più punti. Devi solo cambiare il codice in un punto (cioè nella funzione) e si rifletterebbe in tutto il programma.

La modularità è di nuovo un ulteriore vantaggio. Scrivere un grande pezzo di codice che include ogni e tutto, riduce la leggibilità del codice e lo rende difficile da gestire. È possibile dividere il codice in sezioni per singole funzionalità utilizzando le funzioni, che sono più semplici da capire e più facili da gestire.



La funzione fornisce anche l'astrazione, in cui possiamo chiamare una funzione e ottenere l'output senza conoscere l'implementazione interna.

Andando avanti con i tipi di funzione C

Tipi di funzione in C

Esistono due tipi di funzioni:
Funzioni di libreria
Funzioni definite dall'utente

tipo di dati per la data in sql

Le funzioni della libreria sono quelle funzioni che sono già definite nella libreria C come strcat (), printf (), scanf () ecc. Devi solo includere i file di intestazione appropriati per usare queste funzioni.
Le funzioni definite dall'utente sono quelle funzioni che sono definite dall'utente. Queste funzioni sono realizzate per riutilizzare il codice e per risparmiare tempo e spazio.

Ora che conosciamo i vantaggi della creazione di una funzione, capiamo come dichiarare una funzione in C.

Dichiarazione e definizione di funzione

Dichiarazione di funzione:

Sintassi della dichiarazione di funzione:

return_type function_name (data_type arg1, data_type arg2) int add (int x, int y) // dichiarazione di funzione

Nella dichiarazione di funzione, specifichiamo il nome della funzione, il numero di parametri di input, i loro tipi di dati e il tipo di ritorno della funzione. La dichiarazione di funzione indica al compilatore l'elenco di argomenti che la funzione si aspetta con i loro tipi di dati e il tipo di ritorno della funzione.

Nella dichiarazione di funzione, specificare i nomi del parametro è facoltativo, ma è obbligatorio specificare i loro tipi di dati.

int add (int, int) // dichiarazione di funzione

La funzione sopra specificata prenderà due parametri interi.

Definizione di funzione

 Immagine- Funzioni in C- Edureka
int add (int, int) // dichiarazione di funzione tipo_ritorno nome_funzione (parametri) {corpo della funzione}

Come mostrato nell'immagine sopra, la definizione di una funzione è composta da due parti, ovvero intestazione e corpo della funzione

Intestazione funzione: l'intestazione della funzione è uguale alla dichiarazione della funzione senza il punto e virgola. L'intestazione della funzione contiene il nome della funzione, il parametro e il tipo restituito.

  • Tipo di ritorno: Il tipo restituito è il tipo di dati del valore che verrà restituito dalla funzione. La funzione può o non può restituire un valore. In caso affermativo, è necessario specificare il tipo di dati del valore di risintonizzazione, altrimenti il ​​tipo restituito deve essere void.

  • Nome funzione: Questo è il nome della funzione utilizzando la quale possiamo chiamare la funzione quando e dove necessario.

  • Parametri: I parametri sono i valori di input che verranno passati alla funzione. Racconta i tipi di dati degli argomenti, il loro ordine e il numero di argomenti che verranno passati alla funzione. I parametri sono opzionali. Puoi anche avere funzioni senza parametri.

Funzione Corpo: Il corpo della funzione è l'insieme di istruzioni che esegue un'attività specifica. Definisce cosa fa la funzione.

Esempio:

int add (int x, int y) {int sum = x + y return (sum)}

Si consiglia di dichiarare una funzione prima di definirla e utilizzarla. In C, possiamo dichiarare e definire la funzione nello stesso punto.

Esempio:

#include int add (int, int) // dichiarazione di funzione // definizione di funzione int add (int x, int y) // intestazione della funzione {// corpo della funzione int sum = x + y return (sum)} // Funzione principale int main () {int sum = add (23, 31) printf ('% d', sum) return 0}

Come possiamo vedere nell'esempio sopra, stiamo chiamando la funzione utilizzando int sum = add (23, 31). Il valore restituito dalla funzione viene memorizzato nella variabile sum.

Prima di andare avanti, c'è un altro concetto importante da capire sul parametro. Esistono due tipi di parametri:

Parametro effettivo : Quei parametri che vengono passati alle funzioni durante la loro chiamata sono conosciuti come parametri effettivi. Ad esempio, 23 e 31 nell'esempio precedente sono i parametri effettivi.

Parametro formale : I parametri ricevuti dalle funzioni sono noti come parametri formali. Ad esempio, x e y nell'esempio precedente sono i parametri formali.

Andiamo rapidamente avanti e comprendiamo i diversi modi di chiamare una funzione in C.

Chiamare una funzione

Ci sono due modi in cui possiamo chiamare una funzione:

  • Chiama per valore
  • Chiama per riferimento

Chiama per valore

Nel metodo call by value, il valore del parametro effettivo viene passato come argomento alla funzione. Il valore del parametro effettivo non può essere modificato dai parametri formali.

Nel metodo call be value, viene assegnato un indirizzo di memoria diverso ai parametri formali e effettivi. Solo il valore del parametro effettivo viene copiato nel parametro formale.

Esempio:

#include void Call_By_Value (int num1) {num1 = 42 printf ('nInside Function, Number is% d', num1)} int main () {int num num = 24 printf ('nBefore Function, Number is% d', num ) Call_By_Value (num) printf ('nAfter Function, Number is% dn', num) return 0}

Produzione

Nell'esempio sopra, prima di chiamare dalla funzione valore, il valore di num è 24. Quindi, una volta che chiamiamo la funzione e passiamo il valore, e lo cambiamo all'interno della funzione, diventa 42. Quando torniamo e stampiamo di nuovo il valore di num nella funzione principale, diventa 24.

Chiama per riferimento

Nella chiamata per riferimento, l'indirizzo di memoria del parametro effettivo viene passato alla funzione come argomento. Qui, il valore del parametro effettivo può essere modificato dal parametro formale.

Lo stesso indirizzo di memoria viene utilizzato sia per il parametro effettivo che per quello formale. Quindi, se il valore del parametro formale viene modificato, viene riflesso anche dal parametro effettivo.

In C usiamo i puntatori per implementare la chiamata per riferimento. Come puoi vedere nell'esempio seguente, la funzione Call_By_Reference si aspetta un puntatore a un numero intero.

Ora, questa variabile num1 memorizzerà l'indirizzo di memoria del parametro effettivo. Quindi, per stampare il valore che è memorizzato nell'indirizzo di memoria puntato da num1 dobbiamo usare l'operatore di dereferenziazione, ad esempio *. Quindi, il valore di * num1 è 42.

L'operatore indirizzo & viene utilizzato per ottenere l'indirizzo di una variabile di qualsiasi tipo di dati. Quindi, nell'istruzione della chiamata di funzione 'Call_By_Reference (& num)', l'indirizzo di num viene passato in modo che num possa essere modificato utilizzando il suo indirizzo.

Esempio

#include // definizione della funzione void Call_By_Reference (int * num1) {* num1 = 42 printf ('nInside Function, Number is% d', * num1)} // Main Function int main () {int num num = 24 printf ( 'nBefore Function, Number is% d', num) Call_By_Reference (& num) printf ('nAfter Function, Number is% dn', num) return 0}

Produzione

cos'è l'astrazione in java con l'esempio

In questo esempio, il valore di num è inizialmente 24, all'interno della funzione principale. Una volta passato alla funzione Call_By_Reference e il valore è stato modificato dal parametro formale, è stato modificato anche per il parametro effettivo. Questo è il motivo per cui quando stampiamo il valore di num dopo la funzione sta stampando 42.

Andando avanti con i tipi di funzioni definite dall'utente in C

Tipi di file definiti dall'utente Funzione in C

Esistono vari tipi di funzioni definite dall'utente basate sul tipo di ritorno e sugli argomenti passati.

Andando avanti con Nessun argomento passato e nessun valore restituito

1. Nessun argomento passato e nessun valore restituito

Sintassi:

dichiarazione di funzione:

void function () chiamata di funzione: function () definizione di funzione: void function () {istruzioni}

Esempio

cos'è un carattere in java
#include void add () void add () {int x = 20 int y = 30 int sum = x + y printf ('sum% d', sum)} int main () {add () return 0}

Andando avanti con Nessun argomento passato ma un valore di ritorno

2 Nessun argomento passato ma un valore di ritorno

Sintassi:

dichiarazione di funzione:

int function () chiamata di funzione: function () definizione di funzione: int function () {le istruzioni restituiscono a}

Esempio:

#include int add () int add () {int x = 20 int y = 30 int sum = x + y return (sum)} int main () {int sum sum = add () printf ('sum% d', sum) return 0}

Andando avanti con gli argomenti passati ma nessun valore restituito

3 Argomento passato ma nessun valore restituito

Sintassi:

dichiarazione di funzione:

funzione void (int) chiamata di funzione: funzione (a) definizione di funzione: funzione void (int a) {istruzioni}

Esempio:

#include void add (int, int) void add (int x, int y) {int sum = x + y return (sum)} int main () {add (23, 31) return 0}

Andando avanti con Argomento passato e un valore restituito

4 Argomento passato e valore restituito

Sintassi:

dichiarazione di funzione:

int funzione (int) chiamata di funzione: funzione (a) definizione di funzione: int funzione (int a) {istruzioni restituiscono a}

Esempio

#include int add (int, int) int add (int x, int y) {int sum = x + y return (sum)} int main () {int sum = add (23, 31) printf ('% d' , sum) return 0}

Vediamo ora rapidamente le funzioni della libreria C che sono importanti per scrivere un programma.

Funzioni della libreria C.

Le funzioni di libreria sono funzioni in C che sono predefinite e sono presenti per impostazione predefinita. Devi solo includere il file di intestazione specifico nel programma e puoi utilizzare le funzioni definite in quel file di intestazione. Ogni file di intestazione fornisce un tipo specifico di funzionalità. L'estensione del file di intestazione è .h.

Ad esempio, per utilizzare le funzioni printf / scanf dobbiamo includere stdio.h nel nostro programma, che fornisce funzionalità relative allo standard input / output.

Di seguito è riportato l'elenco dei file di intestazione.

unostdio.hFile di intestazione di input / output standard
2conio.hFile di intestazione di input / output della console
3string.hFunzioni di libreria relative alle stringhe come gets (), put (), ecc.
4stdlib.hFunzioni di libreria generali come malloc (), calloc (), exit (), ecc.
5math.hFunzioni relative alle operazioni matematiche come sqrt (), pow (), ecc.
6time.hFunzioni legate al tempo
7ctype.hFunzioni di gestione dei caratteri
8stdarg.hFunzioni di argomenti variabili
9signal.hFunzioni di gestione del segnale
10setjmp.hFunzioni di salto
undicilocale.hFunzioni locali
12errno.hFunzioni di gestione degli errori
13assert.hFunzioni di diagnostica

Ora, dopo aver esaminato le funzioni C precedenti, avresti compreso ogni sfumatura di funzione e come implementarla nel linguaggio C. Spero che questo blog sia informativo e un valore aggiunto per te.

Così siamo giunti alla fine di questo articolo su 'Funzioni in C'. Se desideri saperne di più, dai un'occhiata al , una società di formazione online affidabile. Il corso di formazione e certificazione Java J2EE e SOA di Edureka è progettato per formarti sia sui concetti di base che avanzati su Java insieme a vari framework Java come Hibernate e Spring.

Hai domande per noi? Per favore, menzionalo nella sezione commenti di questo blog e ti risponderemo il prima possibile.