Împrumut bun venit înapoi în această prelegere Vreau să vorbesc despre definirea funcțiilor în C definirea unei funcții știm
importanța funcțiilor înțelegem avantajele pe care le vom dori să folosim funcții în programele noastre.
Deci, atunci când creați o funcție de bal într-C, trebuie să specificați antetul funcției ca prima
linie a definiției funcției.
Vom vorbi despre definirea unei funcții și vom vorbi de asemenea despre implementarea unei funcții de implementare a
unei funcții este doar rezolvarea problemelor.
Este doar un C regulat care definește o funcție spunând că funcția există.
Deci, atunci când definiți o funcție, primul lucru pe care îl faceți este să aveți acel antet al funcției și
apoi să îl arhivați cu o breșă curată care inițiază codul de bloc pentru funcție.
Deci, este ca și cum ați folosi o declarație de tip brace.
La fel ca atunci când utilizați o bretonă curată într-o buclă de forță, cu excepția cusăturilor curl sunt necesare pentru funcții.
Nu există nici o eliminare și aceasta înseamnă întotdeauna începutul codului pentru acea funcție.
Orice între brățara de început și sfârșitul este codul pentru funcție.
Aici veți implementa sarcina.
Deci între C se numește corpul funcției și prima linie a funcției se numește
antetul funcției.
Antetul funcției definește numele funcției.
Parametrii funcției pe care o vom vorbi despre parametri și argumente în detaliu.
Dar acum trebuie doar să știți că există ceva numit parametri, iar parametrii vor specifica
numărul și tipurile de valori pe care le puteți.
Puteți trece parametrii de date care au legătură cu transmiterea datelor de tip pentru valoarea pe care o returnează funcția.
Am menționat acele funcții care pot returna datele.
Deci, atunci când această funcție a avut de gând să aveți numele funcției datele pe care le puteți
lua pot fi acceptate de funcția și datele care sunt returnate de către funcție.
Nu ne vom concentra momentan pe datele care pot fi transmise sau pe datele returnate.
Vom vorbi despre crearea unei funcții simple.
Organismul de funcții conține doar un cod obișnuit și acest cod este executat atunci când apelați sau invoca funcția,
iar corpul funcției în sine va avea acces la orice valori care sunt transmise ca argumente.
Deci, datele pe care le-ați transmis le puteți utiliza aceste date în interiorul funcției.
Organismul funcției cum arată aceasta este funcția pe care o are funcția ei dacă ea are primul cuvânt și funcția
a avut-o este un cuvânt cheie reprezentând tipul de date care va fi returnat
din funcție.
Următorul cuvânt cheie este numele funcției și apoi ați lăsat paranteze și apoi aveți
parametri separați prin virgule.
Acestea vor fi datele transmise funcției.
Și apoi aveți parantezele potrivite pentru a încheia antetul funcției.
Apoi, aveți o bretonă curată care semnifică începutul implementării funcției și aveți orice număr de declarații pentru
a face o sarcină, cum am spus că doriți ca funcțiile dvs. să fie mici.
Vor să fie coezivi.
Nu vor să fie peste tot.
Ei vor să aibă o singură concentrare a face ceva specific cum am spus dacă ai
o funcție care primește o intrare citește o intrare nu o nu imprimă ieșire nu știi că face orice sortare sau
nu face nimic altceva.
Dacă aveți o funcție denumită sortare, sortează datele pe care nu le primește, știți că funcțiile trebuie să fie
coerente și mici.
Este mult mai ușor să depanați depanarea acelor funcții, astfel încât să le faceți coerente și apoi să aveți
acea breșă care să se încheie cu implementarea funcției.
Așa arată o funcție în vedere.
Acum, să ne concentrăm asupra numelor de funcții și vom vorbi mai târziu despre parametrii și tipurile de returnări.
Prima linie a funcției din nou definește compilatorul în ordine de la stânga la dreapta.
Trei lucruri despre funcție.
După cum am menționat, tipul valorii returnează numele funcției și apoi orice dată este dată.
Aceasta este doar pentru a rezuma acest lucru este important în ceea ce privește numele de funcții.
Doriți să alegeți nume de funcții semnificative.
Este la fel de important ca alegerea unor nume de variabile semnificative.
Aceasta afectează foarte mult lizibilitatea programului, astfel încât nu aveți nevoie de funcții X sau Y.
Denumiți funcția pe baza a ceea ce va face.
Dacă se adaugă la numele de numere, adăugați dacă știți că scădeți două nume de numere urmărite.
În acest exemplu este o funcție simplă.
Nu vă faceți griji în privința golului.
Îți faci griji pentru numele de aici.
Avem un mesaj care are nevoie de o functie si apoi vedem acea bratara
care inseamna inceputul functiei si apoi avem o implementare.
Această implementare nu face altceva decât să afișeze un șir de text și apoi
avem acel drept Curly Berry Deci, aceasta este o funcție foarte simplă care nu face prea mult afișează rezultatele.
În acest exemplu pentru mesajul de imprimare, primul rând al mesajului informează compilatorul că funcția
nu întoarce nici o valoare.
Acesta este cuvântul cheie gol.
Din nou, nu trebuie să vă concentrați asupra acestui lucru, dar asta este ceea ce face.
Următorul este numele și apoi numele după argumente sunt numite parametri.
Și vom folosi din nou cuvântul cheie void, dacă nu transmitem date, iar declarația din corpul funcției poate fi
absentă, dar ele trebuie să fie întotdeauna prezente, astfel încât nu trebuie să aveți nicio implementare.
Dar trebuie să aveți brațul pentru ca o funcție să fie acolo dacă nu există declarații în corpul
unei funcții, tipul returnării trebuie să fie nul.
Și din nou se va concentra pe acest lucru mai târziu și funcția nu va face nimic pentru că nu aveți nicio implementare.
Dacă definiți o funcție cu un corp gol, aceasta poate fi folositoare chiar dacă nu realizează nimic
pe care îl faceți cu ușurință în faza de testare a unui program foarte mare.
Și ceea ce vă permite să faceți este să puteți rula programul numai cu anumite funcții, ceea ce face cu
adevărat ceva ce vă ajută să vă testați mai bine vă ajută să izolați erorile.
Ați putea avea chiar implementarea în testul din corpul funcției, dar doar ați comentat și apoi puteți face această diviziune
și cuceriți abordarea pe măsură ce testați din ce în ce mai mult.
Apoi, puteți începe punerea în aplicare a organelor de funcții.
Este un proces pas cu pas de lucru.
Lucrați în mod constant în bucăți mici adăugând testarea codului care codifică și apoi treceți la pasul următor și apoi în
cele din urmă implementarea implementării întregi va fi finalizată și toate funcțiile vor
fi implementate.
Deci, există un caz de utilizare pentru a avea un corp de funcții care nu are cod sau a comentat funcții de numire numele unei funcții
poate fi orice nume legal, la fel ca atunci când numiți o variabilă pe care nu o puteți folosi cuvinte
rezervate.
Deci, acestea sunt cuvinte cheie în limba, cum ar fi Introduceți dublu, deoarece acestea reprezintă dimensiunea tipurilor de
date întotdeauna un operator.
Știți că doriți să îl puteți utiliza dacă nu aveți, de asemenea, două funcții cu același nume.
Și acest lucru este denumit și funcția de supraîncărcare a funcțiilor, dar
nu puteți avea două funcții cu același nume, supraîncărcarea nu este acceptată în C.
În sfârșit, puteți avea același nume ca o funcție care este în funcția de bibliotecă standard.
Din punct de vedere tehnic, dacă nu includeți această bibliotecă, puteți include fișierul antet, dar dacă doriți vreodată
să utilizați efectiv această funcție de bibliotecă, compilatorul s-ar plânge și va spune că aveți
două funcții cu același nume.
Deci, nu numiți-vă funcțiile la fel ca și funcțiile standard ale bibliotecii. Un nume legal este același ca o variabilă. O succesiune de
litere și cifre pentru a începe primul caracter trebuie să fie o literă, iar cea din urmă poate
fi un subliniere.
Nu puteți să porniți funcțiile cu numere sau cu orice fel de caractere ciudate.
Numele pe care îl alegeți ar trebui să fie semnificativ și relevant pentru ceea ce face funcția.
Am spus deja asta.
Repet acest lucru pentru accentuare.
Numele foarte importante sunt foarte importante.
Veți deseori defini nume de funcții și în nume de variabile care constau în mai mult de un cuvânt.
Deci, acum vreau să vorbesc puțin despre stilul de codificare.
Probabil ați observat când mi-am scris codul pe care îl folosesc pentru cămilă.
Există trei moduri diferite în care poți.
Puteți scrie numele variabilelor și funcțiilor pe care le puteți separa fiecare dintre cuvinte într-un nume de
funcție cu un caracter subliniere.
Este o abordare pe care o puteți valorifica prima literă a fiecărui cuvânt sau puteți capitaliza
cuvintele după prima jumătate a primului cuvânt și încă mai aveți ström împreună.
Nu puteți avea spații între ele.
Aceasta este doar o abordare pentru numire, deoarece este important să urmați niște convenții, astfel încât să fie mai
ușor de citit doar având un cuvânt lung cu cinci cuvinte diferite, deci dacă aveați o funcție care spune că ați verificat
o intrare validă, nu veți dori să au toate aceste litere mici pentru a fi greu de citit și de
a identifica unde erau cuvintele.
Cazul cămilă este o modalitate de a identifica unde sunt cuvintele și în multe cuvinte.
Este ușor să vedeți ce face această funcție și subliniază o altă modalitate de a separa cuvintele și de a valorifica prima literă a
fiecărui cuvânt ca pe un alt mod de separare.
Este important să puteți separa cuvintele într-o funcție pentru a le face mai ușor de citit.
Eu folosesc de obicei cazul de cămilă și atunci când utilizați una dintre aceste convenții pe care doriți să o utilizați pentru
tot ceea ce doriți să-l utilizați pentru a numi variabile pe care doriți să-l utilizați pentru numele funcțiilor.
De obicei, pur și simplu urmați această convenție comună de codificare.
Ea face lucrurile mai ușor de citit.
Funcții prototipuri.
Am vorbit despre definirea unei funcții.
Cum rămâne cu funcția de compensare.
Puteți spune de ce trebuie să declarați o funcție.
Nu o declarați când o definiți.
Dar există și un concept de declarare a unei funcții și este necesar dacă doriți să utilizați
funcția înainte de a fi implementată înainte de a fi definită, astfel încât un prototip al funcției este o declarație care definește o funcție.
Acesta îi spune compilatorului în esență toate detaliile funcției pe care o defines, te tipul de retur de
nume și tipul fiecărui parametru.
Deci, arata ca un antet de functii.
Acesta oferă toate specificațiile externe ale funcției.
În principal, probabil ați auzit și semnătura funcției signiture.
Asta e.
Specificarea datelor a returnat datele pe care le are în tot ceea ce privește funcția însăși.
Doriți să scrieți o prototip funcție în același mod în care scrieți funcția.
Singura diferență este că ați pus un semicolon la sfârșit și aceasta este doar declararea funcției.
Aceasta spune că funcția există într-un prototip de funcții care permite compilatorului să genereze instrucțiunile corespunzătoare în
fiecare punct în care apelați funcția.
Verifică, de asemenea, că utilizați funcția corectă și
că fiecare invocare motivul pentru care furnizați funcția de hatters este astfel încât să puteți invoca funcția fără un avertisment.
Sau declarație de funcționare fără a fi implementată.
Deci, este doar ordinea codului tău.
Și vă voi da un exemplu despre asta într-o secundă.
Când includeți un fișier cu antet standard pe un program, fișierul cu antet adaugă prototipurile funcției prototip
funcția de obicei merge în fișiere antet.
Dacă doriți să le refolosiți în multe fișiere sursă diferite.
Dacă le utilizați numai și un singur fișier sursă, le puteți pune doar în partea de sus și în
fișierul sursă.
Dar pentru că folosim funcția de tipărire care poate fi folosită în multe fișiere sursă diferite care au funcția ei
vor fi definite în antet sau declarația de funcții va fi definită în antet.
În acest caz ca TDOT fiecare astfel
încât acestea vor apărea, de obicei, în fișierele sursă.
Dacă numai acel fișier sursă folosește acea funcție.
În caz contrar, le-ați pus într-un fișier de antet care sunt utilizate de mai multe fișiere sursă.
Permite oricare dintre funcțiile din fișier să apeleze oricare dintre acele funcții care sunt
definite indiferent de locul în care plasați implementarea.
Dacă plasați implementarea unei funcții după ce o apelați C se plânge și spune că nu
știi că nu știe despre ea deoarece atunci când compilați linia de compilare cu linia dacă plasați
declarația în partea de sus atunci poate invoca funcția înainte de a fi definită înainte ca numele
parametrilor implementați să nu fie aceiași în definiția funcției.
Puteți avea nume diferite atunci când spun nume care sunt identificatorii datelor.
Puteți modifica numele parametrilor din prototipul de funcții pe care începeți să-l spuneți și aveți
aceleași tipuri de date, dar puteți schimba numele.
Este întotdeauna o bună practică să includeți declarații de funcții pentru toate funcțiile programului din partea
de sus a fișierului.
Îți păstrează programul mai consistent cu designul și previne orice eroare care apare în orice moment.
Dacă doriți vreodată să apelați această funcție înainte de implementare.
Iată un exemplu de prototipuri de funcții.
În partea de sus a fișierului pe care îl includem și apoi avem câteva funcții pe care le-am declarat
suma medie și obținerea de date.
Observi că arată exact ca un antet al funcției.
Ea are tipul de retur are parametrii care sunt definiți în funcție și apoi are un semicolon
la sfârșit.
Nu există nicio implementare pentru aceste funcții.
Tocmai spuneți compilatorului Aceasta este funcția există și așa se definește ce vă permite să faceți,
este acum funcția dvs. principală.
Ai putea suna la media pe care ai putea să o apelezi la PS. ați putea suna datele obținute în implementările reale
pot fi reduse.
Ii suni.
Dacă nu aveați aici anteturile de funcții atunci când ați încercat să le apelați în principiu
dacă au fost definite sub rutina principală, ați avea erori sau avertismente.
Deci, haideți să aruncăm o privire la blocurile de cod și de cod.
Aici avem rutina noastră obișnuită.
Acum, să spunem că dorim să sunăm formularul pe care dorim să-l creăm o funcție sau dorim să invocăm o funcție pe care o
vom invoca apelul funcției și apoi nu vom lua nici un parametru.
O numim funcția noastră principală pe linia 7.
O vom implementa pe linia 10.
Vom salva voyde și nu vom face nimic.
Vom păstra gol atunci când vom ajunge să compilați acest lucru pe care veți observa că acest compilator dă
doar un avertisment.
Se spune că add are o declarație implicită.
Puteți să scăpați de acest avertisment utilizând o declarație de funcții.
Puteți declara că declarați funcția la oprire spunând în principiu spunând compilatorului că o să-l
folosiți undeva, dar nu știți unde este implementarea.
Deci, ce poți să faci este să spui că se adaugă void aici chiar și să adaugi punct și virgulă.
Acum va scapa de acest avertisment în unele compilații sau de fapt vă va da o eroare.
Acum, când o compilez, nu am nici o avertizare și nici o eroare.
Așa face declarația unei funcții.
Vă permite să puneți funcția oriunde.
Acum, dacă nu ați avea declarația de funcții în partea de sus și ați avut implementarea
de mai sus unde ați numit-o, atunci nu veți vedea acolo, deoarece compilatorul va afla despre
funcția înainte de a încerca să o invocieze.
Dacă construim acest lucru, veți vedea și că nu există aer.
Acum am menționat că, de obicei, doriți să vă declarați toate funcțiile de top doar pentru o bună practică și cred
că trebuie să faceți acest lucru.
Așa că continuați să faceți asta, dar dacă ieșiți din acest obicei, trebuie fie să vă declarați funcțiile înainte de
a le apela, fie trebuie să furnizați prototipuri de funcții pentru că nu doriți avertismente sau erori în
programul dvs.
Acesta este modul în care puteți defini o funcție și acesta este modul în care puteți utiliza prototipurile de funcții, iar următoarea lectură
pe care o vom vorbi despre parametrii cum puteți transmite datele unei funcții.