Sfat 1: Cum să treci un matrice la o funcție

Sfat 1: Cum să treci un matrice la o funcție

Arrays sunt una dintre cele mai intenseforme de stocare a datelor structurate în programele de calculator. Procesarea lor poate fi realizată prin diferiți algoritmi implementați în metodele și funcțiile de clasă. În consecință, de multe ori trebuie să treci o matrice la o funcție. O mare libertate în alegerea metodelor de a face această acțiune este oferită de limbile C și C ++.

Cum să treci un matrice la o funcție

Veți avea nevoie

  • - compilatoare de limbaj C și C ++.

instrucție

1

Treceți o gamă de dimensiuni fixe la funcție. Prototype funcția, astfel încât să conțină un argument de tipul corespunzător. De exemplu, o declarație a funcției, gazdă ca matrice parametru de întregi valori numerice ale celor trei elemente pot apărea în felul următor: void ArrayFunction (int aNumbers [3]); Apel se efectuează această funcție prin transmiterea în mod direct la matrice ca argument: void someFunction () { int a Numere [] = {1, 2, 3}; ArrayFunction (aNumbers);} Datele transferate sunt copiate în stivă. Modificarea unei matrice în funcția apelată nu modifică sursa.

2

Treceți matrice cu lungime variabilă la funcție. Pentru a face acest lucru, pur și simplu nu specifică dimensiunea argumentului corespunzător: void ArrayFunction (int aNumbers []); matrice multidimensionali pot transmite în mod similar mod (variabilă poate fi doar prima „măsurare»): void ArrayFunction (int aNumbers [] [3] [2]) ; Apel funcții similare efectuate în același mod ca și în primul ordin shage.Dlya să fie capabil să proceseze corect matrice de lungime variabilă ca funcție, este necesar fie să transmită în mod explicit numărul de elemente prin parametru suplimentar sau a unui acord de utilizare a impune restricții de Elementele Achen înșiși (valoare determinată ar trebui să fie o indicație sfârșitul șirului).

3

Treceți matricea peste pointer. Argumentul funcției trebuie să fie un pointer la o valoare cu un tip corespunzător elementelor din matrice. De exemplu: ArrayFunction void (pNumbers * int); Accesul la datele din funcția poate fi efectuată în notație cu elementele de matrice, și prin intermediul adresei aritmetice: ArrayFunction void (pNumbers * int) {pNumbers [0] = 10; // accesul la elementul 0 * (pNumbers + 1) = 20; // acces la elementul 1} Aveți grijă! Având în vedere că funcția nu este o copie a datelor este transmis, și un pointer la ele, vor fi supuse massiv.Preimuschestvom modificări sursa acestei metode este viteza, de economisire a resurselor de calcul și o anumită flexibilitate. Astfel, este posibil să se determine funcția țintă, trecându-l pointer la un element de matrice arbitrar: void someFunction () {int aNumbers [] = {1, 2, 3}; ArrayFunction (aNumbers); // întreaga matrice ArrayFunction (& aNumbers [1]); // pornind de la al doilea element} Metoda de asemenea, implică, de obicei transferul numărului de elemente disponibile în parametrul caracteristică suplimentară sau utilizați capăt al șirului.

4

Transferați datele către o funcție cuun parametru care este un obiect sau o referință la un obiect al clasei care implementează funcționalitatea matricei. Aceste clase sau șabloane de clasă sunt, de obicei parte a bibliotecilor populare și cadrele (QVector în Qt, CArray în MFC, std :: vector în STL, etc). Cele mai multe clase de date pune în aplicare implicit schimbul de date de strategie (date implicite de partajare) cu numărare de referință, efectuând copierea profundă numai atunci când datele sunt modificate (copie pe scriere). Aceasta reduce la minimum consumul de resurse de calcul, chiar și în cazul tablourilor de obiecte prin transmitere de valoare prin argumentele funcții și metode: void ArrayFunction (QVector oArray) {int nItemCount = oArray.count (); int nItem = oArray [0];} void someFunction () {QVector oArray (10); pentru (int i = 0; i

Sfat 2: Cum să returnați o matrice dintr-o funcție

O colecție numită de același tip de date,numită matrice, este utilizat pe scară largă în diverse limbi de programare. Cu ajutorul unei matrice, este mult mai ușor să lucrați cu date, este furnizat codul structurat. Funcțiile în limbi sunt, de asemenea, de mare importanță, permițându-vă să efectuați o anumită sarcină oriunde în cod, fără a o reimplementa. În acest caz, este adesea necesar să se utilizeze datele unui singur matrice într-o funcție, precum și în alte blocuri de cod. Întoarcerea unui matrice dintr-o funcție poate fi implementată în mai multe moduri.

Cum se returnează o matrice dintr-o funcție

instrucție

1

În limbajul de programare C ++, directreturnarea unui matrice din funcție este nereușită, această sarcină poate fi rezolvată prin transmiterea unui pointer către o serie de date. Pentru a face acest lucru, atunci când declarați funcția folosită, scrieți-i ca valoare de retur un indicator pentru tipul de date a căror matrice va fi transferată. Un exemplu de cod de program C ++ care returnează datele de array în funcție de pointer: class CHelp {private: int m_data [4]; public: fDebit () {m_data [0] = 42; m_data [1] = 56; } int * returnArray () // declarație și descriere a funcției {return m_data; }}; void principal () {int * m_dataA; Сhelp * ohelp = nouChelp (); m_dataA = ohelp-> returnArray (); // returnați o matrice de clasă} Totuși, trebuie să rețineți că o astfel de întoarcere este posibilă numai în cadrul aceleiași clase. Dacă doriți să utilizați o funcție normală în codul programului, un transfer similar de date prin pointer va fi incorect și poate fi efectuat cu o eroare. Acest lucru se datorează domeniului de aplicare al variabilelor. Atunci când creați o matrice în funcția în sine, ea nu va fi vizibilă în afara acesteia.

2

Dacă trebuie să transferați o matrice dinfuncția locală, ar trebui să utilizați următoarea opțiune. Formați matricea din codul principal al programului. Declară o funcție cu parametrii, primul dintre care este un pointer constant la tipul de date al matricei, al doilea este un pointer normal de același tip. Când apelați o funcție, treceți în primul și al doilea parametru aceeași adresă a matricei create. Lucrați cu datele din funcție cu primul pointer primit și scrieți toate modificările în funcție de indicatorul celui de-al doilea. Astfel, la sfârșitul funcției, veți obține rezultatele muncii sale în matrice de către al doilea pointer. Un exemplu de declarare a unei astfel de funcții: void my_funk_1 (const double * in, doble * out);

3

Utilizați clasa implementată std ::auto_ptr, care rezolvă problema transmiterii unui pointer dintr-o funcție fără erori la domeniul variabilelor. Codul programului de probă: include include int [] arr_f2 (int count) // descrierea funcției {return new int [count];} void main () {std :: auto_ptr ptr (Arr_f2 (20)); // apelați funcția și returnați linia de matrice

4

În limbajul de programare FoxPro, revenirea unei funcțiiAcesta poate fi implementat într-un mod similar, referindu-se la codul massivu.Primer creat anterior pe limba FoxPro: mas local (2) = func_2 (@ F3) mas (15) mas (20) FUNCȚIE func_2 (mas) masmas ARRAY EXTERNE (1) =? 1mas (2) = 2RETURNENDFUNC

5

Limba de scripting AutoIt vă permite să returnați un tabloua funcției, folosind modele standard și operatorul de cod Return.Primer în AutoIt limba: #include $ Rez = func_3 () $ aRezultat = StringSplit ($ Rez, "|") func_3 func () $ ARET = 15 & "|" & 40 $ returnare ARET // Returnează o matrice de ARET funktsiiEndFunc

Sfat 3: Cum să returnați un tablou

matrice sunt una dintre formele cele mai simplestocarea structurată a datelor. În ceea ce privește stocarea de matrice unidimensionale retrasă zona indivizibilă a memoriei, iar cele mai multe limbaje de programare au sintaxa pentru anunțurile lor, acestea sunt utilizate intens ca tampoane pentru a transfera cantități mari de informații diferite (inclusiv biblioteca) funcțiile. La rândul său, funcțiile sunt uneori necesare pentru a reveni matrice.

Cum se întoarce o matrice

Veți avea nevoie

  • - Editor de text;
  • - compilatorul și link-ul C sau C ++.

instrucție

1

Returnați datele dintr-o funcție sau o metodă prin plasarea acestorao matrice de lungime fixă ​​alocate de către apelant și transmis link. Face o determinare a tipului de date corespunzătoare, cum ar fi: typedef int t_array10 [10] Utilizați-l în declarație și punerea în aplicare a funcției dorite, sau o metodă: void ReturnArray (t_array10 & raOut) {raOut [0] = 10;}, după caz, apel: int aNumbers [10 ]; ReturnArray (aNumbers); dezavantajul acestei metode este că lungimea matrice este fixă.

2

Returnați datele matricei, plasându-le în ieșiretampon este alocat de către apelant și trecut prin pointer. Prototipul funcției sau metoda poate cuprinde un parametru declarat în notație matrice fără specificare dimensiune: void ReturnArray (int anArray [], int nMărime), precum și un pointer: void ReturnArray (int * pnArray, int nMărime); în ambele cazuri de identificator parametru poate fi utilizat în notație array: void ReturnArray (int * pnArray, int nMărime) {for (nSize--; nMărime> -1; pnArray [nMărime] = nSize--);} // aNumbers vyzovint [10]; ReturnArray ( aNumbers, sizeof (aNumbers) / sizeof (aNumbers [0])); Aceasta stabilește metoda de transmisie în funcție și returnează seturi de date sunt în majoritatea cazurilor, folosite pentru a dezvolta programe în C. nota t privind funcțiile și metodele și datele de returnare de primire, în acest mod, de obicei, ar trebui să aibă un parametru suplimentar, care este transmis prin dimensiunea buffer-ului reală.

3

Întoarceți o matrice creată într-o funcție sau într-o metodă. Formal, în acest caz, nu ar trebui returnat un matrice, ci un pointer la primul său element: int * ReturnArray () {int * pnArray = int int [10]; // lucrați cu pnArray returnați pnArray;} / / obțineți un pointer la arrayint creat * pnNumbers = ReturnArray (); // usedelete [] pnNumbers; // sunt dezactivate. Există unele limitări în utilizarea acestei metode. Deci, matricea trebuie să fie localizată în memoria alocată dinamic. În plus, trebuie să fie șters folosind metoda corespunzătoare creării (ștergeți în cazul utilizării de noi, gratuite pentru malloc etc.).

4

Utilizați clase de containere laeste convenabil să returnați matricele atunci când dezvoltați programe în C ++. Exemplu de creare și returnarea unei matrice, care este clasa șablon vector obiect al Standard Template Library C ++, pentru int specificat, ar putea arata astfel: #include <vector> std :: vector <int> ReturnArray () {std :: vector <int> oArray; oArray.resize (10); oArray [0] = 100; oArray [1] = 200; return oArray;} std :: vector <int> oArray = ReturnArray (); Rețineți că cele mai populare cadre oferă clase puternice sau șabloane de clasă matrice. Adesea pun în aplicare conceptul de separare implicită a datelor cu numărarea și copierea referințelor la scriere. Prin urmare, valoarea de returnare a unor astfel de matrice de funcții este foarte eficientă și este asociată cu o cheltuială minimă a resurselor de calcul.

Sfat 4: Cum se transferă formularul php

Prelucrarea acestor forme este una dintre cele mai importantefuncții importante ale limbajului de programare PHP (PHP). Instrumentele disponibile vă permit să preluați datele introduse de utilizatori și să le stocați în variabile speciale, apoi să convertiți și să scrieți în diferite baze de date (baze de date) sau fișiere.

Cum se depune formularul php

instrucție

1

Creați formularul cerut folosind HTML,alegerea celei mai convenabile metode de transmitere a datelor. Pentru a insera, utilizați descriptorul <form> </ form>. Pentru prelucrarea reușită a datelor utilizatorilor prin PHP, este important să specificați atributul metodă și acțiune. De exemplu: <form action = "process.php" method = "POST">

2

Acest cod HTML indică faptul că datele formularului vor fisunt transmise unui script scris în fișierul process.php, utilizând metoda POST, care vă permite să transmiteți variabilelor de care aveți nevoie într-un mod ascuns pentru utilizator. O alternativă la metodă este GET, care transmite datele dorite prin bara de adrese. Astfel, după ce faceți clic pe buton, datele introduse vor fi afișate în partea de sus a ferestrei browserului.

3

Creați elementele de formular necesare utilizândvaloarea atributei suplimentare, numele și tipul. De exemplu, pentru a crea două câmpuri în care utilizatorul poate introduce numele și prenumele, puteți scrie următorul cod: Nume: <input type = "text" nume = "nume utilizator"> <br> Nume de intrare <input type = "Familie"> <br> <input type = "submit"> </ form> Acest segment vă permite să creați două câmpuri de text pentru a specifica numele de utilizator și numele de familie cu numele de utilizator și numele de familie, care vor fi utilizate pentru prelucrarea datelor ulterior.

4

Creați un fișier nou numit proces.php în același director ca și documentul HTML unde se află datele formularului. Pentru a crea un fișier, faceți clic dreapta pe zona liberă a ferestrei de afișare a conținutului catalogului și selectați "New" - "File text", apoi specificați numele și extensia corespunzătoare. Introduceți următorul cod: <? Php $ username = htmlspecialchars ($ _POST [ 'usersname']); $ second_name = htmlspecialchars ($ _POST [ 'familyname']); echo "Numele și prenumele $ username $ second_name" ;? ?>

5

Acest cod vă permite să extrageți datele necesare,pe care utilizatorul la introdus în formular. $ Nume de utilizator introdus este atribuit numele usersname câmpul de text care a fost trecut prin globală matrice $ _POST. Folosind funcția htmlspecialchars (); ștergeți caracterele inutile pe care utilizatorul le-ar putea scrie greșit sau în mod special în timp ce tastați cu tastatura. După scoaterea din ea datele solicitate în variabile pot fi realizate prin ieșirea informațiilor primite operatorul ecou. Înainte de încheiere, se pot întreprinde și acțiunile necesare, care pot fi necesare pentru a îndeplini o anumită sarcină. Valorile obținute pot fi prelucrate de toate disponibile în funcțiile PHP, astfel încât programatorul nu se limitează la instrumente pentru lucrul cu date HTML-forme.