logo

Lietotāja definēta funkcija C

A lietotāja definēta funkcija ir funkcijas veids C valodā, ko definē pats lietotājs, lai veiktu kādu konkrētu uzdevumu. Tas nodrošina mūsu programmas koda atkārtotu izmantošanu un modularitāti. Lietotāja definētās funkcijas atšķiras no iebūvētajām funkcijām, jo ​​to darbību nosaka lietotājs, un to lietošanai nav nepieciešams galvenes fails.

Šajā rakstā mēs uzzināsim par lietotāja definēta funkcija, funkcijas prototips, funkcijas definīcija, funkcijas izsaukums un dažādi veidi, kā mēs varam nodot parametrus funkcijai.



Kā lietot lietotāja definētas funkcijas programmā C?

Lai izmantotu lietotāja definētu funkciju, mums vispirms ir jāsaprot dažādas tās sintakses daļas. Lietotāja definēto funkciju C var iedalīt trīs daļās:

  1. Funkciju prototips
  2. Funkcijas definīcija
  3. Funkcijas izsaukums

C funkcijas prototips

Funkcijas prototips ir pazīstams arī kā funkcijas deklarācija, kas norāda funkcijas nosaukums, funkcijas parametri, un atgriešanas veids . Funkcijas prototips nesatur funkcijas pamattekstu. To galvenokārt izmanto, lai informētu kompilatoru par lietotāja definētas funkcijas esamību, ko var izmantot programmas vēlākajā daļā.

Sintakse

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

Mēs varam arī izlaist argumentu nosaukumu funkcijas prototipā. Tātad,



virkne concat java
return_type function_name  (type1 , type2 , ... typeN);>
Funkciju prototips

C Funkcijas definīcija

Kad funkcija ir izsaukta, funkcijas definīcija satur faktiskos paziņojumus, kas tiks izpildīti. Visi funkcijas definīcijas paziņojumi ir iekļauti { } lencēm.

Sintakse

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

Piezīme: Ja funkcijas izsaukums ir pieejams pēc funkcijas definīcijas, mēs varam izlaist funkcijas prototipa daļu un tieši definēt funkciju.

C Funkcijas izsaukums

Lai pārsūtītu vadību uz lietotāja definētu funkciju, mums tā ir jāizsauc. Funkcijas tiek izsauktas, izmantojot to nosaukumus, kam seko apaļas iekavas. Viņu argumenti tiek nodoti iekavās.



Sintakse

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

Lietotāja definētas funkcijas piemērs

Šī C programma parāda, kā mūsu programmā izmantot lietotāja definētas funkcijas.

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;> }>

>

>

Izvade

Sum of 10 and 11 = 21>

Funkciju definīcijas sastāvdaļas

Funkcijas definīcijā ir trīs komponenti:

  1. Funkciju parametri
  2. Funkciju korpuss
  3. Atdeves vērtība

1. Funkciju parametri

Funkciju parametri (pazīstami arī kā argumenti) ir vērtības, kuras zvanītājs nodod izsauktajai funkcijai. Funkcijai varam nodot nevienu funkciju parametru vai to skaitu.

Funkcijas definīcijā ir jādefinē funkcijas nosaukums un veids, un funkcijas izsaukumā varam nodot tikai tādu pašu parametru skaitu un veidu.

Piemērs

int foo ( int a, int b) ;>

Šeit, a un b ir funkciju parametri.

Piezīme: C valoda nodrošina metodi, ar kuras palīdzību funkcijai varam nodot mainīgu argumentu skaitu. Šādas funkcijas sauc par variadic funkciju .

2. Funkciju korpuss

Funkcijas pamatteksts ir priekšrakstu kopa, kas ir ietverta iekavās { }. Tie ir paziņojumi, kas tiek izpildīti, kad funkcija tiek izsaukta.

Piemērs

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

Lūk, paziņojumi starp { un } ir funkcionāls ķermenis.

3. Atgriešanas vērtība

Atgriešanas vērtība ir vērtība, ko funkcija atgriež zvanītājam. Funkcija var atgriezt tikai vienu vērtību, un tā nav obligāta. Ja vērtība nav jāatgriež, atgriešanas veids tiek definēts kā spēkā neesošs.

The atgriezt atslēgvārdu tiek izmantots, lai atgrieztu vērtību no funkcijas.

Sintakse

 return ( expression );>

Piemērs

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

Piezīme: Mēs varam izmantot norādes vai struktūras, lai atgrieztu vairākas vērtības no funkcijas C.

Parametru nodošana lietotāja definētām funkcijām

Mēs varam nodot parametrus funkcijai C, izmantojot divas metodes:

  1. Zvanīt pēc vērtības
  2. Zvanīt pēc uzziņas

1. Zvans pēc vērtības

Izsaukumā pēc vērtības vērtības kopija tiek nodota funkcijai, un funkcijā veiktās izmaiņas netiek atspoguļotas atpakaļ vērtībās. Faktiskie un formālie argumenti tiek veidoti dažādās atmiņas vietās.

Piemērs

C

kas ir kaudze java




// 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;> }>

sakārtot pēc nejaušības principa SQL

>

>

Izvade

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

Piezīme: Vērtības izsaukumā netiek mainītas pēc vērtības, jo tās netiek nodotas pēc atsauces.

2. Zvanīt pēc uzziņas

Izsaukumā ar atsauci argumenta adrese tiek nodota funkcijai, un funkcijā veiktās izmaiņas tiek atspoguļotas atpakaļ vērtībās. Mēs izmantojam norādes vajadzīgā veida, lai saņemtu adresi funkcijā.

Piemērs

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;> }>

>

>

Izvade

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

Plašāku informāciju skatiet šajā rakstā – Atšķirība starp zvanu pēc vērtības un zvanu pēc atsauces

Lietotāja definēto funkciju priekšrocības

Programmas funkciju izmantošanas priekšrocības ir šādas:

  • Var izvairīties no koda dublēšanās programmās, izmantojot funkcijas. Kods var tikt uzrakstīts ātrāk un tādējādi tas ir labāk lasāms.
  • Kodu var sadalīt un iekarot, izmantojot funkcijas. Šis process ir pazīstams kā sadali un iekaro. Ir grūti rakstīt lielu daudzumu koda galvenajā funkcijā, kā arī testēšanu un atkļūdošanu. Mūsu vienu uzdevumu var sadalīt vairākos mazākos apakšuzdevumos, izmantojot funkcijas, tādējādi samazinot kopējo sarežģītību.
  • Piemēram, izmantojot C valodā pow, sqrt u.c., nezinot, kā tas tiek realizēts, ar funkcijām var paslēpt ieviešanas detaļas.
  • Ar nelielām izmaiņām vai bez izmaiņām vienā programmā izstrādātās funkcijas var izmantot citā, samazinot izstrādes laiku.