logo

Käyttäjän määrittämä funktio C:ssä

A käyttäjän määrittämä toiminto on C-kielen funktio, jonka käyttäjä itse määrittelee suorittamaan tietyn tehtävän. Se tarjoaa koodin uudelleenkäytettävyyden ja modulaarisuuden ohjelmaamme. Käyttäjän määrittämät toiminnot eroavat sisäänrakennetuista toiminnoista, koska käyttäjä määrittää niiden toiminnan, eikä niiden käyttöön vaadita otsikkotiedostoa.

Tässä artikkelissa opimme käyttäjän määrittämä funktio, funktion prototyyppi, funktion määritelmä, funktiokutsu ja eri tavat, joilla voimme välittää parametreja funktiolle.



Kuinka käyttää käyttäjän määrittämiä toimintoja C:ssä?

Käyttääksemme käyttäjän määrittämää funktiota meidän on ensin ymmärrettävä sen syntaksin eri osat. Käyttäjän määrittämä funktio C:ssä voidaan jakaa kolmeen osaan:

  1. Toiminnon prototyyppi
  2. Toiminnon määritelmä
  3. Toimintokutsu

C-funktion prototyyppi

Funktioprototyyppi tunnetaan myös funktion määrittelynä, joka määrittää funktion nimi, funktion parametrit, ja palautustyyppi . Toiminnon prototyyppi ei sisällä funktion runkoa. Sitä käytetään periaatteessa ilmoittamaan kääntäjälle käyttäjän määrittämän funktion olemassaolosta, jota voidaan käyttää ohjelman myöhemmässä osassa.

Syntaksi

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

Voimme myös ohittaa funktion prototyypin argumenttien nimet. Niin,



muhkea tietokonekieli
return_type function_name  (type1 , type2 , ... typeN);>
Toiminnon prototyyppi

C Toiminnon määritelmä

Kun funktio on kutsuttu, funktion määritelmä sisältää varsinaiset suoritettavat käskyt. Kaikki funktiomääritelmän lauseet ovat sisällä { } henkselit.

Syntaksi

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

Huomautus: Jos funktiokutsu on läsnä funktiomäärityksen jälkeen, voimme ohittaa funktion prototyyppiosan ja määrittää funktion suoraan.

C Toimintokutsu

Jotta voimme siirtää ohjauksen käyttäjän määrittämälle funktiolle, meidän on kutsuttava se. Funktiot kutsutaan niiden nimillä, joita seuraa pyöreät hakasulkeet. Heidän argumenttinsa välitetään suluissa.



Syntaksi

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

Esimerkki käyttäjän määrittämästä funktiosta

Seuraava C-ohjelma havainnollistaa, kuinka käyttäjän määrittämiä toimintoja käytetään ohjelmassamme.

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

>

>

Lähtö

Sum of 10 and 11 = 21>

Funktiomääritelmän komponentit

Funktiomäärittelyssä on kolme komponenttia:

  1. Toimintoparametrit
  2. Toimiva runko
  3. Palautusarvo

1. Toimintoparametrit

Funktioparametrit (tunnetaan myös argumentteina) ovat arvoja, jotka kutsuja välittää kutsutulle funktiolle. Voimme välittää funktiolle ei yhtään tai kuinka monta funktioparametria.

Meidän on määritettävä funktion nimi ja sen tyyppi funktiomäärittelyssä ja voimme välittää vain saman määrän ja tyyppisiä parametreja funktiokutsussa.

Esimerkki

int foo ( int a, int b) ;>

Tässä, a ja b ovat funktioparametreja.

Huomautus: C-kieli tarjoaa menetelmän, jolla voimme välittää muuttuvan määrän argumentteja funktiolle. Tällaisia ​​funktioita kutsutaan variadic-funktioiksi.

2. Toimintorunko

Funktion runko on joukko lauseita, jotka on suljettu { } aaltosulkeisiin. Ne ovat lauseita, jotka suoritetaan, kun funktiota kutsutaan.

Esimerkki

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

Tässä väliset lausunnot { ja } on toimintavartalo.

3. Palautusarvo

Palautusarvo on arvo, jonka funktio palauttaa kutsujalleen. Funktio voi palauttaa vain yhden arvon, ja se on valinnainen. Jos arvoa ei palauteta, palautustyypiksi määritetään void.

The palauta avainsana käytetään palauttamaan arvo funktiosta.

Syntaksi

 return ( expression );>

Esimerkki

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

Huomautus: Voimme käyttää osoittimia tai rakenteita palauttamaan useita arvoja C:n funktiosta.

Parametrien välittäminen käyttäjän määrittämille funktioille

Voimme siirtää parametreja C:n funktiolle kahdella tavalla:

  1. Soita arvon mukaan
  2. Soita viitteellä

1. Soita arvon mukaan

Kutsussa arvolla kopio arvosta välitetään funktiolle ja funktioon tehdyt muutokset eivät näy takaisin arvoihin. Todelliset ja muodolliset argumentit luodaan eri muistipaikkoihin.

Esimerkki

C

kuvan tasaaminen css:ssä




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

Cassidy Hutchinsonin koulutus

>

>

Lähtö

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

Huomautus: Arvoja ei muuteta kutsussa arvon mukaan, koska niitä ei välitetä viittauksella.

2. Soita referenssistä

Viittauskutsussa argumentin osoite välitetään funktiolle ja funktioon tehdyt muutokset heijastuvat takaisin arvoihin. Käytämme osoittimia vaadittua tyyppiä vastaanottaaksesi funktion osoitteen.

Esimerkki

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

>

>

Lähtö

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

Katso lisätietoja tästä artikkelista – Ero puhelun ja viitepuhelun välillä

Käyttäjän määrittämien toimintojen edut

Ohjelman toimintojen käytön edut ovat seuraavat:

  • Ohjelmien koodin päällekkäisyyksiä voidaan välttää käyttämällä funktioita. Koodi voidaan kirjoittaa nopeammin ja olla näin luettavampaa.
  • Koodi voidaan jakaa ja valloittaa funktioiden avulla. Tämä prosessi tunnetaan nimellä Divide and Conquer. Päätoiminnon sisällä on vaikea kirjoittaa suuria määriä koodia, samoin kuin testausta ja virheenkorjausta. Yksi tehtävämme voidaan jakaa useampaan pienempään osatehtävään funktioiden avulla, mikä vähentää yleistä monimutkaisuutta.
  • Esimerkiksi käytettäessä pow, sqrt jne. C:ssä tietämättä kuinka se on toteutettu, toteutus yksityiskohdat voidaan piilottaa funktioilla.
  • Pienillä muutoksilla tai ilman muutoksia yhdessä ohjelmassa kehitettyjä toimintoja voidaan käyttää toisessa, mikä vähentää kehitysaikaa.