Funcții care returnează valoarea

Funcții, domenii variabile, recursivitate.

Funcția este o unitate independentă a programului, creată pentru rezolvarea unei sarcini specifice. Funcția din C joacă același rol ca și subrutinele sau procedurile în alte limbi. Este convenabil să utilizați funcții, de exemplu, dacă trebuie să procesați același cod de program. Ca și variabilele, funcțiile trebuie declarate (declarați). Funcția trebuie declarată înainte de a fi utilizată. Rețineți această regulă simplă - declarați mai întâi și apoi utilizați.

Forma de bază a definiției funcției este:

tip <имя функции>(lista parametrilor)
funcțiile corpului
>

tip <имя функции>(lista parametrilor);

Funcția se numește după cum urmează:

Când apelați o funcție, puneți și virgulă.

De ce este necesară declararea unei funcții înainte de utilizare? Faptul este că pentru funcționarea corectă a codului funcției mașinii trebuie să cunoașteți tipul valorii returnate, numărul și tipurile de argumente. Când apelați o funcție, sunt copiate valorile parametrilor actuali în stiva, în funcție de tipurile specificate în prototipul său. Apoi are loc o tranziție la funcția apelată.

Iată un exemplu de apelare a unei funcții care va imprima pe ecran textul "Funcție apelată".

/ * Noi folosim propria noastră funcție * /

funcția1 (); // Apelați funcția
>


/ * Descrierea funcției * /
void function1 (void) // Titlul funcției

> // Sfârșitul corpului funcției

Rezultatul programului va fi o linie imprimată pe ecran.
Observați titlul din descrierea funcției! După aceasta, nu puneți punct și virgulă.

Directiva directivei preprocesor pur și simplu introduce textul stdio.h în textul programului nostru. Și introduceți unde este această directivă. Dacă ștergeți sau comentați linia #include , atunci programul nu va funcționa deoarece funcția printf () nu va fi declarată. Compilatorul va arunca doar o eroare - Funcția 'printf' ar trebui să aibă un prototip (funcția 'printf' trebuie să aibă un prototip).

Rețineți, de asemenea, că tipul valorii returnate a funcției noastre este nevalid (gol). Aceasta înseamnă că funcția nu va returna nicio valoare.

Funcții care returnează o valoare.

Să analizăm un exemplu în care vom descrie două funcții, respectiv, le vom declara și le vom numi succesiv. Dar în acest exemplu pentru o funcție se specifică tipul valorii returnate - int.

/ * Două dintre funcțiile noastre * /

int x; // Declarați variabila x (variabilă globală)

void principal (void)
funcția void1 (void); // Declare function function1 ()
int funcția2 (); // function2 () va returna o valoare de tip int

x = 10; // Alocați o valoare de 10 la variabila x

printf ("Înainte de a apela funcția2 (), x este. \ n", x);

funcția1 (); // Apelați funcția funcției1 ()
x = funcția2 (); // Funcția de apel2 ()

printf ("După ce a sunat funcția2 (), x este. \ n", x);
>

/ * Descrierea funcțiilor noastre * /

funcția void1 (void)
printf ("Prima funcție a fost numită \ n");
>

int function2 (void)
int y; // Declarați o variabilă locală
y = x + 10;

return y; // Returnați valoarea y
>

Acum, să vedem textul programului. După linia #include declarăm variabila globală x. Deoarece x este o variabilă globală, aceasta va fi vizibilă pentru toată funcția programului nostru, adică. Această variabilă poate fi utilizată de toate funcțiile.

În corpul principal (), declarăm două funcții, dintre care unul poate returna o valoare de tip int. Apoi, atribuiți o valoare de 10 variabilei x, deoarece x este o variabilă globală, această variabilă va fi vizibilă pentru funcția principal (). funcția principal () poate folosi această variabilă. După această alocare, afișăm valoarea x pe ecran.
Următorul rând va apărea pe ecranul monitorului: "Înainte de a apela funcția2 () x este de 10".

Notați apelul pentru printf () -
printf ("Înainte de a apela funcția2 (), x este. \ n", x);
În linia după Sibyl. există un simbol \ n. \ n - caracterul de control, înseamnă că trebuie să mergi la o linie nouă.

Apoi, numim funcția1 (). Această funcție imprimă pur și simplu linia "Prima funcție este numită \ n" pe ecran și din moment ce \ n este în linie, va fi executată o nouă linie.

În linia următoare, x = funcția2 (); Variabila x are o valoare care returnă funcția2 (). Uită-te la descrierea funcției funcției2 (). În corpul acestei funcții, declarăm variabila y și apoi atribuim valorii variabilei x + 10 la variabila y. Deoarece x este o variabilă globală (este vizibilă pentru funcția 2), totul va funcționa.

Înainte vine șirul de returnare y; Folosind instruciunea return, vom returna valoarea y. Amintiți-vă că dacă funcția returnează o valoare, atunci în corpul acestei funcții trebuie să existe o declarație de returnare (poate nu este una). Ei bine, cu ajutorul operatorului de retur, vom returna valoarea variabilei locale y la funcția principală () apelantă.

Acum, uita-te la corpul funcției principal (). Următorul rând după x = function2 (); este șirul printf ("După ce a sunat funcția2 () x este. \ n", x); care afișează valoarea variabilei modificate x;
O linie va apărea pe ecran - "După apelarea funcției funcția2 () x este de 20".

Funcții cu parametri.

Funcțiile lui C pot avea parametri. Acești parametri sunt transmiși la funcție și procesați acolo. Încă o dată vom arăta forma de bază a descrierii funcției

tip <имя функции>(lista parametrilor)
funcțiile corpului
>

În lista de parametri, trebuie specificat un tip pentru fiecare parametru.
Un exemplu de listă validă de parametri:
(int x, char a, float z)
Un exemplu de listă nevalidă de parametri:
funcția (int x, a, float z)

Să ne uităm la toate acestea cu un exemplu. Să avem o funcție care are un parametru x. Funcția va returna pătratul valorii lui x.

int pătrat (int x)
x = x * x; // Simbolul * este operația de multiplicare
retur x;
>

Acum, să aruncăm o privire asupra unei funcții exemplu care va afișa valoarea variabilei z de tip float pe ecran.

void myout (float z) // Variabila z este un parametru formal.
printf ("Z =% f", z); //% f - înseamnă că se emite un număr în virgulă mobilă
>

Articole similare