După antetul funcției acolade corp scrise a funcției.
Iată cum ar trebui să funcționeze această funcție. Dacă funcția trebuie să returneze o valoare în corpul funcției trebuie să fie în mod necesar o întoarcere ghid. În exemplul nostru, din moment ce funcția principală ar trebui să returneze o valoare de tip int, atunci programul este adus la ecranul Hello World, scrisă de retur (0); Adică, funcția returnează 0, programul care a cauzat.
Definiți și descrieți funcțiile pe care le-am învățat deja. Acum ne aranja programul nostru în Listarea 10.1 ca o funcție care are o valoare de tip int 2, și care returnează nimic, ca rezultat al muncii lor
void fun1 (int a, int b)
if ((a == 0) (b = 0)!) printf ( "nici o soluție \ n");
if ((a == 0) (b == 0)) printf ( "multe soluții \ n");
în cazul în care (b% a = 0!) printf ( "nici o soluție \ n");
După cum se poate vedea în titlu, am definit o funcție numită c fun1 care are două argumente de tip întreg, și le-am dat numele de la o dată și b. Acum, in interiorul functiei le putem folosi ca variabile normale, numit și b. Parametrii descriși în antetul sunt numite parametrii formali ai funcției.
Să scrie un program care să declare funcția noastră și să o folosească.
void fun1 (int a, int b)
if ((a == 0) (b = 0)!) printf ( "nici o soluție \ n");
if ((a == 0) (b == 0)) printf ( "multe soluții \ n");
în cazul în care (b% a = 0!) printf ( "nici o soluție \ n");
Să analizăm codul programului nostru, în același timp, și a vedea cum funcționează.
Prima linie include stdio.h.
În continuare, vom declara o funcție numită c fun1 care are două argumente de tip întreg, și le-am dat imediat numele a și b. Apoi, în acolade dezvăluite corpul funcției. Adică ambele trebuie să lucreze funcția noastră. Deoarece funcția are un tip de întoarcere de vid, nu returnează nimic, atunci, astfel încât nu există nici o declarație de întoarcere în funcția noastră.
După fun1 corpul funcției, declară funcția principală. Declarați două variabile de tip int. Am citit în ele valorile pe care utilizatorul introduce. Funcția fun1 și trece-l ca un argument variabile x și y Urmatorul apel. Apoi, din nou, noi numim funcție, dar trece-l ca numerele 3 și 9 din argumentele.
Rezultatul acestui program, introducere de date 2 și 5 prezentate mai jos.
Să examinăm modul în care apelul funcției. Să începem cu o mai ușor, ceea ce se întâmplă atunci când vom scrie
În primul rând, ea creează în două variabile întregi cu numele a și b. Care sunt specificate în antet. Și atribuie valori a = 3, b = a îndeplinit funcțiile corpului 9.Dalee. După funcția sa terminat, se trece înapoi la programul principal. Și variabile a și b sunt eliminate. Și efectuați linia după apelul funcției.
Rețineți că, după ce funcția a terminat activitatea, variabilele a și b sunt eliminate. Acestea sunt disponibile numai în cadrul funcției în care acestea sunt declarate.
Considerăm acum cazul transferului variabilelor în funcție.
În primul rând, ea creează în două variabile întregi cu numele a și b. Care sunt specificate în antet. Aceste valori sunt copiate valori variabile care au fost trecut la funcția ca parametri. Apoi, funcția de organism. După funcția sa terminat, se trece înapoi la programul principal. Și variabile a și b sunt eliminate. Și efectuați linie după apelul funcției
Rețineți că, în funcție sunt transmise nu variabilele x și y, ci doar copii ale valorilor lor. Ie orice acțiuni realizate apoi într-o funcție care nu au nici un efect.
Un alt punct important. Domeniul de aplicare al variabilelor. Așa cum sa discutat mai sus, și b variabile sunt disponibile numai în cadrul funcției în care acestea sunt declarate. Domeniul lor de fun1 funcții ale corpului. Dincolo de această funcție, aceste variabile nu există.
Din acest fapt interesant. De exemplu, dacă vom rescrie codul programului nostru ca aceasta.
void fun1 (int a, int b)
if ((a == 0) (b = 0)!) printf ( "nici o soluție \ n");
if ((a == 0) (b == 0)) printf ( "multe soluții \ n");
în cazul în care (b% a = 0!) printf ( "nici o soluție \ n");
Acum, că am devenit funcții de scriere aproape profesionale va reveni din nou la exemplul inițial. Am ajuns la punctul în care soluția elaborată în funcție de intrare care este alimentat valori a și b. Listarea 10.9.
Acum vom rescrie funcția noastră, astfel încât acesta returnează rezultatul la un întreg. Suntem de acord că
30001 este răspunsul la multe soluții.
30002 este soluția otvetno.
Numerele nu sunt alese la întâmplare. Domeniul de soluții pe care le avem -30000-30000, atunci nu pot fi utilizate aceste numere. în caz contrar răspunsul real, poate coincide cu una dintre ele. De exemplu, în cazul în care soluția de multe desemnate ca 3. Deci, dacă a = 3, b = 9 funcția de răspuns se va întoarce 3, dar am fost de acord să ia în considerare acest lucru pentru multe soluții. Și nu este clar care va fi răspunsul.
Funcția rescriere este după cum urmează:
int fun1 (int a, int b)
if ((a == 0) (b = 0)!) return (30002); // printf ( "nici o soluție \ n");
if ((a == 0) (b == 0)) return (30001); // printf ( "multe soluții \ n");
if (! b% a = 0) return (30002); // printf ( "nici o soluție \ n");
întoarcere (b / a); //printf(".\n",b/a);
Deoarece funcția returnează o valoare de tip int, acesta poate fi folosit oriunde în cazul în care utilizarea unui int este permisă. În exemplul nostru, am înregistrat în declarația printf. Deși s-ar aloca mai întâi o valoare a unor variabile, iar apoi printf de ieșire din valoarea sa.
int fun1 (int a, int b)
if ((a == 0) (b = 0)!) return (30002); // printf ( "nici o soluție \ n");
if ((a == 0) (b == 0)) return (30001); // printf ( "multe soluții \ n");
if (! b% a = 0) return (30002); // printf ( "nici o soluție \ n");
întoarcere (b / a); //printf(".\n",b/a);
Apropo, după cum ați observat în funcția noastră de câteva ori a reveni este întâlnită. Aceasta este opțională. Ar putea fi mai întâi pentru a atribui o valoare unei singure variabile, iar apoi afișați-l în cele din urmă a funcției. În general, este destinat pentru încetarea imediată a funcției. După cum declarația pauză în cicluri. Și astfel încât să poată fi utilizate în funcții care nu returnează nici o valoare.
Precum și despre utilizarea se poate returna o valoare care ar trebui să revină funcția. Deci, este folosit în acest exemplu.
Funcțiile pot apela reciproc, principalul lucru pe care acestea au fost definite înainte de a le utiliza.
Ne îmbunătățim programul și se va asigura că acesta este afișat în mod corespunzător în cazul în care programul de lucrări sau net.A pentru a descrie aceasta mai multe funcții numite prov.
if ((fun1 (0,0) == 30001) (fun1 (0,3) == 30002) (fun1 (3,9) == 3) (fun1 (3,7) == 30002))
Si adauga la programul nostru.