Funcțiile reveni prin referință
În acele cazuri în care rezultatul funcției este reprezentat de nu una, ci mai multe valori, le-a reveni cu revenirea operatorului devine imposibilă, deoarece, prin definiție, se poate întoarce doar o singură valoare. Mai mult, antetul funcției poate fi înregistrată numai un singur tip de rezultat. mai degrabă decât câteva. Pentru astfel de cazuri, în C ++ este furnizată o altă formă a funcțiilor este o funcție pentru a reveni prin referință. Corpurile acestor funcții nu utilizează return întoarcere, din moment ce nu poate fi folosit pentru a reveni mai multe valori.
Sintaxa funcțiilor antet întoarce prin referință, este după cum urmează:
nume nule (nume1 tipul1, tipul2 nume2, ..., tipN imyaN, Type1 nume1, type2 nume2, ..., tipN imyaN)
Există nule - cuvântul cheie pentru gol;
name1 Type1, tipul2 nume2, ..., tipN imyaN - tipul și numele datelor de intrare;
type1 nume1, type2 nume2, ..., tipN imyaN - tipul și numele datelor de ieșire.
Toate cifrele din paranteze formează o listă de opțiuni. constând din nume abstracte de date (fără valoare).
Înainte de numele datelor de ieșire este plasat semnul (Ampersand). Acest simbol indică o referință la celula care este alocată variabilei care este marcat cu acest simbol, și unde să plaseze rezultatul.
apela funcțiile de operator care returnează link-ul are forma următoare:
functionname (nume1, nume2 imyaN.);
Aici FUNCTION_NAME - numele funcției;
(. Nume, nume2 imyaN) - o listă de argumente. constând din nume atât de intrare și de ieșire a datelor înregistrate în ordinea corespunzătoare listei de parametri. În această listă, datele de intrare - datele reale, care au propriile lor valori.
În C ++, toate variabilele sunt luate matrice acceptă implicit ca variabile aici. Prin urmare, înainte de astfel de variabile în semnul lista de parametri să nu fie făcută.
Spre deosebire de operatorul care returnează valoarea rezultatului, operatorul solicită o funcție care returnează rezultatul legăturii este înregistrat operator independent, și nu ca un operand ca parte a unui alt operator.
Apelul functiei operator care returnează un rezultat pe link-ul din lista de argumente trebuie să aibă același număr de date ca și lista de parametri (antet funcție), precum și datele corespunzătoare ale acestor liste ar trebui să fie de același tip.
Când apelarea unei funcții, care returnează un rezultat pe link-ul pentru variabilele utilizate de link (date de ieșire), celula de memorie din stiva nu sunt alocate. După finalizarea valorilor în funcție de datele de ieșire introduse în celulele lor, izolate în descrierea, în loc de valorile care au fost acolo anterior. Astfel, informațiile pre-existente în ele este pierdut.
Ca un exemplu, o funcție care returnează rezultatul legăturii poate fi o funcție care determină cele mai mici și mai mare număr de numere de (N). Block - Schema și textul unei astfel de funcții este prezentată mai jos.
void MINMAX (float a (N), float min, float max)
dacă (a [i] dacă (a [i]> max) max = a [i]; Titlul dat funcția de conectare (Ampersand) a marcat două variabile min și max, jucând rolul de ieșire. Deoarece variabila de intrare este o matrice a (N). 15.3.3. Caracteristicile de locație în cadrul programului Datorită faptului că orice program scris în C ++ limbaj de programare, ar trebui să fie întotdeauna principala Funcția principală (), plasarea funcțiilor de specialitate este considerată în legătură cu acesta. Există două funcții posibile de cazare: - Înainte de funcția principală, - După funcția principală. Într-o primă variantă de realizare, toate textele funcții specializate sunt amplasate chiar în fața funcției principale. În acest caz, trebuie să se țină seama de faptul că funcțiile de specialitate pot fi numite nu numai principal Funcția principală (), dar, de asemenea, pentru a apela reciproc. În cazul în care programul prevede un singur apel la o altă funcție, în acest caz, textul numit funcția trebuie să fie plasate înainte de textul apelantului. va un mesaj de eroare atunci când nerespectarea acestei reguli. Deoarece textul compilatorul apelantului „vede“ numele funcției numit, pe care nu a fost încă îndeplinite, și va fi perceput ca fiind necunoscute pentru el. Această regulă forțează programatorul să fie atent și tulpina suplimentare. Pentru a elimina astfel de inconveniente, este posibil să se utilizeze de-al doilea exemplu de realizare plasarea funcții. În acest caz, toate textele funcțiilor specializate sunt localizate după funcția principală, în orice ordine. Dar compilatorul „nu a stat pretenții“, în cazul amenajării reciproce necorespunzătoare a caracteristicilor, înainte de principalele prototipuri funcționale plasate toate funcțiile de specialitate. Prototip - un antet funcție, se termină cu punct și virgulă. Dacă îndeplinesc această cerință, compilatorul va „vedea“ toate aceste funcții, iar ei nu vor în viitor „pentru a provoca confuzie“. programe de exemplu, folosind caracteristici. Într-o matrice dat, o (M * N), unde M = 5 și N = 8, este necesar să se determine cel mai mic și cel mai mare element. Algoritmul de calcul cu ajutorul funcțiilor nu este o diagramă bloc, iar debitul stabilit - diagrame ale unor funcții. inclusiv funcția principală de a uni întregul proces de calcul într-o singură unitate. inmatr () // matrice de intrare Funcțiearticole similare