logo

Funció definida per l'usuari en C

A funció definida per l'usuari és un tipus de funció en llenguatge C que el defineix el mateix usuari per realitzar alguna tasca específica. Proporciona reutilitzabilitat de codi i modularitat al nostre programa. Les funcions definides per l'usuari són diferents de les funcions integrades, ja que el seu funcionament l'especifica l'usuari i no es requereix cap fitxer de capçalera per al seu ús.

En aquest article, aprendrem sobre funció definida per l'usuari, prototip de funció, definició de funció, trucada de funció i diferents maneres en què podem passar paràmetres a una funció.



Com utilitzar les funcions definides per l'usuari a C?

Per utilitzar una funció definida per l'usuari, primer hem d'entendre les diferents parts de la seva sintaxi. La funció definida per l'usuari en C es pot dividir en tres parts:

  1. Prototip de funció
  2. Definició de la funció
  3. Crida de funció

Prototip de funció C

Un prototip de funció també es coneix com a declaració de funció que especifica el nom de la funció, paràmetres de la funció, i tipus de retorn . El prototip de funció no conté el cos de la funció. Bàsicament s'utilitza per informar al compilador de l'existència de la funció definida per l'usuari que es pot utilitzar en la part posterior del programa.

Sintaxi

return_type function_name  (type1 arg1 , type2 arg2 , ... typeN argN );>

També podem saltar el nom dels arguments del prototip de funció. Tan,



return_type function_name  (type1 , type2 , ... typeN);>
Prototip de funció

Definició de la funció C

Un cop cridada la funció, la definició de la funció conté les declaracions reals que s'executaran. Totes les declaracions de la definició de la funció s'hi inclouen { } tirants.

Sintaxi

return_type function_name (type1 arg1 , type2 arg2 .... typeN argN ) { // actual statements to be executed  // return value if any }>

Nota: Si la trucada de funció està present després de la definició de la funció, podem saltar la part del prototip de funció i definir directament la funció.

C Crida de funció

Per transferir el control a una funció definida per l'usuari, hem de cridar-la. Les funcions s'anomenen utilitzant els seus noms seguits de claudàtors. Els seus arguments es passen entre claudàtors.



Sintaxi

function_name(arg1, arg2, ... argN);>

Exemple de funció definida per l'usuari

El següent programa C il·lustra com utilitzar les funcions definides per l'usuari al nostre programa.

C




// C Program to illustrate the use of user-defined function> #include> // Function prototype> int> sum(>int>,>int>);> // Function definition> int> sum(>int> x,>int> y)> {> >int> sum;> >sum = x + y;> >return> x + y;> }> // Driver code> int> main()> {> >int> x = 10, y = 11;> >// Function call> >int> result = sum(x, y);> >printf>(>'Sum of %d and %d = %d '>, x, y, result);> >return> 0;> }>

>

>

Sortida

algorisme per a la cerca binària
Sum of 10 and 11 = 21>

Components de la definició de la funció

Hi ha tres components de la definició de la funció:

  1. Paràmetres de la funció
  2. Cos de funció
  3. Valor de retorn

1. Paràmetres de la funció

Els paràmetres de funció (també coneguts com a arguments) són els valors que la persona que truca passa a la funció cridada. Podem passar cap o qualsevol nombre de paràmetres de funció a la funció.

Hem de definir el nom de la funció i el seu tipus a la definició de la funció i només podem passar el mateix nombre i tipus de paràmetres a la trucada de funció.

Exemple

int foo ( int a, int b) ;>

Aquí, a i b són paràmetres de funció.

Nota: El llenguatge C proporciona un mètode amb el qual podem passar un nombre variable d'arguments a la funció. Aquestes funcions s'anomenen funció variàdica.

2. Funció Cos

El cos de la funció és el conjunt d'instruccions que es troben entre claus { }. Són les sentències que s'executen quan es crida la funció.

Exemple

int foo (int a, int b) { int sum = a + b;  return sum; }>

Aquí, les declaracions entre { i } és el cos funcional.

3. Valor de retorn

El valor de retorn és el valor que retorna la funció a la persona que truca. Una funció només pot retornar un únic valor i és opcional. Si no s'ha de retornar cap valor, el tipus de retorn es defineix com a nul.

El paraula clau de retorn s'utilitza per retornar el valor d'una funció.

Sintaxi

 return ( expression );>

Exemple

 int  foo (int a, int b) { return a + b; }>

Nota: Podem utilitzar punters o estructures per retornar diversos valors d'una funció en C.

Passant paràmetres a funcions definides per l'usuari

Podem passar paràmetres a una funció en C mitjançant dos mètodes:

  1. Truca per valor
  2. Trucada per referència

1. Crida per valor

En la trucada per valor, es passa una còpia del valor a la funció i els canvis que es fan a la funció no es reflecteixen de nou als valors. Els arguments reals i formals es creen en diferents ubicacions de memòria.

Exemple

C

com recuperar aplicacions ocultes




// C program to show use of> // call by value> #include> void> swap(>int> a,>int> b)> {> >int> temp = a;> >a = b;> >b = temp;> }> // Driver code> int> main()> {> >int> x = 10, y = 20;> >printf>(>'Values of x and y before swap are: %d, %d '>, x,> >y);> >swap(x, y);> >printf>(>'Values of x and y after swap are: %d, %d'>, x,> >y);> >return> 0;> }>

conceptes bàsics de seleni

>

>

Sortida

Values of x and y before swap are: 10, 20 Values of x and y after swap are: 10, 20>

Nota: Els valors no es canvien a la trucada per valor, ja que no es passen per referència.

2. Truqueu per referència

En una trucada per referència, l'adreça de l'argument es passa a la funció i els canvis que es fan a la funció es reflecteixen de nou als valors. Fem servir el punters del tipus requerit per rebre l'adreça a la funció.

Exemple

C




// C program to implement> // Call by Reference> #include> void> swap(>int>* a,>int>* b)> {> >int> temp = *a;> >*a = *b;> >*b = temp;> }> // Driver code> int> main()> {> >int> x = 10, y = 20;> >printf>(>'Values of x and y before swap are: %d, %d '>, x,> >y);> >swap(&x, &y);> >printf>(>'Values of x and y after swap are: %d, %d'>, x,> >y);> >return> 0;> }>

>

>

Sortida

Values of x and y before swap are: 10, 20 Values of x and y after swap are: 20, 10>

Per obtenir més detalls, consulteu aquest article: Diferència entre trucada per valor i trucada per referència

Avantatges de les funcions definides per l'usuari

Els avantatges d'utilitzar funcions al programa són els següents:

  • Es pot evitar la duplicació de codi en els programes mitjançant l'ús de funcions. El codi es pot escriure més ràpidament i, com a resultat, ser més llegible.
  • El codi es pot dividir i conquerir mitjançant funcions. Aquest procés es coneix com Divide and Conquer. És difícil escriure grans quantitats de codi dins de la funció principal, així com provar i depurar. La nostra única tasca es pot dividir en diverses subtasques més petites mitjançant l'ús de funcions, reduint així la complexitat general.
  • Per exemple, quan s'utilitza pow, sqrt, etc. en C sense saber com s'implementa, es poden amagar els detalls d'implementació amb funcions.
  • Amb poques o cap modificació, les funcions desenvolupades en un programa es poden utilitzar en un altre, reduint el temps de desenvolupament.