Faptul că funcția C ++ doar un pointer (sau de referință), puteți trece o matrice, respectiv, va lucra întotdeauna cu matrice sursă, și nu o copie a acesteia (și returnează un pointer la matrice original):
De asemenea, acest cod nu ia în considerare dimensiunea matricei (ciclul rulează strict de trei ori), ceea ce poate duce la următoarele:
- dacă lungimea matricei de intrare este mai mare de 3: vor fi procesate numai primele trei elemente ale matricei;
- dacă lungimea matricei de intrare este mai mică de 3: programul va cădea cu un accident și o eroare de acces la memorie.
Problema cu dimensiunea poate fi rezolvată în două moduri: funcția de transfer în mărime plus de matrice sau a trece o matrice de referință (dacă treci o matrice de referință, o eroare pe care le-ați transferat sau a revenit la o serie de dimensiunea greșit să fie detectată la compilare):
Pentru a reveni o nouă matrice va avea doar în funcția de a aloca memorie pentru noua matrice și returnează un pointer la acesta (lucrul cel mai important, atunci nu uitați pentru a șterge memoria):
Dar avem acelasi C ++, dammit, asa ca in loc de standardul sishnyh arrays sa profite de acele containere care ofera STL patrie:
- std :: vector
o astfel de "matrice" cu o dimensiune variabilă; - std :: matrice
o serie de dimensiuni fixe.
Acum putem folosi iteratori, bazate pe gama de buclă (începând cu C ++ 11) și alte lucruri:
Nu este un expert în C ++, dar pot spune că nu treceți o matrice, dar treceți un pointer la primul său element. În acest caz, nu lucrați cu o copie locală a matricei, ci cu indicatorul acesteia.
În cazul în care funcția de activitate int func (int Array []) este de a modifica „matrice a trecut,“ nu sunteți sigur că vin înapoi, dar dacă într-adevăr doresc cu adevărat ceva să se întoarcă la locul de asteptare (în acest caz, este lipsită de sens) - este necesar schimbați funcția de trabuc:
Rețineți că tipul întoarcere int * este un pointer la int.
Un pointer este trecut la matrice și lucrul se face direct cu el, prin urmare, nu este necesar să se întoarcă, de exemplu: