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:
- Toiminnon prototyyppi
- Toiminnon määritelmä
- 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);>
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:
- Toimintoparametrit
- Toimiva runko
- 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:
- Soita arvon mukaan
- 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.