Prosljeđivanje niza funkciji C ++

Passing An Array Function C

Niz je skupina elemenata iste vrste podataka. Mnoge se funkcije izvode na nizovima u glavnom programu ili izvan njega, u funkcijama. U C ++, u slučaju funkcija, moramo ih proslijediti. To se radi putem parametara kao argumenata. Ovi argumenti mogu biti na različite načine, bilo u velikim nizovima, bilo kroz niz pokazivača. U ovom ćemo vodiču pokriti neke glavne aspekte prijenosa niza pomoću različitih parametara funkcija.

Sintaksa

[Povrataktip] [ime odfunkcija] (podacitipnaziv polja[nizuveličina])

{

funkcijatijelo

}

Primjer 1

Razmotrimo primjer u kojem moramo ispisati ocjene učenika u programu C ++. Ovaj će se ispis uzeti u zasebnu funkciju, a ne u glavni program. Nasuprot tome, uzeti ćemo unose u glavnom programu i te ćemo vrijednosti prenijeti u funkciju kao parametar. Razmotrite funkciju. U svom parametru postoji varijabla tipa podataka niza koja će prihvatiti vrijednosti niza. Ovdje je deklariran cijeli niz. Oznake će se prikazati uz pomoć for petlje. Kao i u nizovima, potrebne su nam petlje da bismo dobili ispis iz njih.





Krećući se prema glavnoj funkciji, deklariramo niz s njegovom veličinom i vrijednostima. Kako moramo pozvati funkciju. Dakle, metoda je ta da naziv funkcije s imenom polja u parametru upisujemo kao argument. Nismo definirali veličinu niza.



Prikaz(oznake);

Argument u parametru podrazumijeva memorijsku adresu niza. U parametru zaglavlja funkcije, int m [7] se pretvara u int *m. To uključuje istu adresu kao i izvorni niz. Kada koristimo m [5] u tijelu funkcije, manipulirat ćemo izvornim nizom.

Prikaz praznine(int m[7] )

U operacijskom sustavu Linux za dobivanje izlaza putem terminala potrebni su neki preduvjeti za instaliranje. Za kompajliranje i izvršavanje koda na terminalu naredbenog retka potreban je prevoditelj. G ++ se koristi u C ++ za kompilaciju.



$g ++ -ilicode3 code3.c

$./kod3

Gdje se -o koristi za spremanje izlaza iz izvorne datoteke u izlaznu datoteku.

Iz izlaza možete vidjeti da se svi brojevi inicirani u nizu u glavnoj funkciji prenose i prikazuju kroz funkciju prikaza.

Primjer 2

Drugi primjer koji se odnosi na niz koji prolazi kroz parametar je prosljeđivanje višedimenzionalnog niza na funkciju. Ovdje se koristi dvodimenzionalni niz (2d). U glavnoj funkciji moramo inicijalizirati niz.

Int array[red][stupac]

Inicijalizacija 2d niza uključuje retke i stupce. Njihov će se redoslijed zadržati tijekom cijelog programa. 2d niz se inicijalizira s dva broja u zagradama. Kao što smo opisali 2 stupca u inicijalizaciji.

Prikaz(na jedan);

Kao argument ćemo koristiti samo naziv niza u parametru.

Sada ćemo pogledati funkcioniranje funkcije prikaza. Prilikom pokretanja funkcije potrebna je varijabla niza da prihvati niz koji je poziv funkcije proslijedio kroz glavni program.

Prikaz praznine(int n[][2] )

Obavezno je spomenuti broj stupaca. Za usporedbu, to nije bitno u slučaju redova. Zato smo ovdje ostavili zagrade retka prazne dok koristimo for loop za prikaz rezultata. No, u slučaju dvodimenzionalnog niza, koristimo ugniježđenu for petlju. Sadrži dva izraza za 2 varijable.

Ispis možemo vidjeti pomoću istog prevoditelja. Možete vidjeti rezultate da se svaka vrijednost prikazuje zasebno s redkom i brojem stupca.

Primjer 3

Ovaj se primjer malo razlikuje od prethodnih. U ovom primjeru spominjemo veličinu niza u parametru poziva funkcije. U deklaraciji funkcije također je uvedena varijabla koja prihvaća veličinu niza.

Počevši od glavnog programa, niz se inicijalizira s vrijednostima.

Prosjek = get Prosjek(ravnoteža,5);

Rezultat će biti pohranjen u varijabli prosjek. Umjesto da se proslijedi samo naziv polja, parametru se dodaje i veličina polja.

Parametar također sadrži varijablu vrste polja i cijeli broj podataka za primanje veličine niza. Vrsta glavnog programa je int jer će od funkcije primiti cijelu vrijednost. Inače, u drugim je slučajevima ništavan.

Sada ćemo vidjeti izlaz. Ova vrijednost je vidljiva kroz sliku koja se dobiva iz funkcije.

Primjer 4

Ovaj se primjer odnosi na određivanje najvećeg broja u nizu, zapravo, iz dva niza. Ovdje pokrećemo dva niza u glavnom programu. Oba polja se zasebno prenose funkciji u zasebnim pozivima funkcija

printMax(arr1);

printMax(arr2);

gdje je printMax naziv funkcije, a arr je niz. Rezultat se neće vratiti iz funkcije i tamo se prikazuje. For petlja će izračunati najveći broj u oba niza. If-naredba koristi se unutar for petlje. Zaglavlje funkcije je:

void printMax(int dol[5])

Kako oba polja sadrže različite vrijednosti, oba će rezultata biti različita.

Primjer 5

Ovaj primjer je sažetak svih vrsta nizova koji prolaze kroz parametre. To mogu biti veličine, veličine ili nizovi pokazivača. Razmotrit ćemo ih jedan po jedan.

U glavnom programu svaka se funkcija prvo deklarira. Možete istaknuti razliku u njihovoj deklaraciji.

Int sum1(int tmp[5]);

Int sum2(int tmp[]);

Int sum3(int*tmp);

Ova tri niza prikazuju da se nizovi mogu proslijediti s tim parametrima u funkciji.

Nakon inicijalizacije funkcije imamo glavni program u kojem je polje deklarirano. Za razliku od prethodnog primjera, jedan niz se inicijalizira umjesto dva, ali se prosljeđuje na tri različita načina. Sada ćemo vidjeti ovdje pozive funkcija.

Ukupno = zbroj1(prodajni);

Ukupno = zbroj2(prodajni);

Ukupno = sume3(prodajni);

Izlaz je prikazan u glavnoj funkciji, pa se varijabli deklarira da prihvaća vrijednost koju funkcija vraća. Iz sva tri poziva funkcija možete vidjeti da su ovdje parametri isti. Svaki niz sadrži samo naziv niza. No, parametri funkcije koja prihvaća niz su različiti.

Unutarnje tijelo sve tri funkcije je isto, jer se zbroj svih brojeva izračunava iz uporabe petlje For. Metodologija i vrijednosti niza su iste; samo postoji razlika između parametara funkcija. Dakle, dokazano je da možemo ili koristiti različite metode za prihvaćanje niza ili izvesti istu funkcionalnost, a odgovor je isti. To možemo potvrditi provjerom izlaza. Koristeći isti postupak kompilacije, dobit ćemo izlaz prikazan na slici ispod.

Možete vidjeti da je odgovor isti za sve tri korištene funkcije.

Zaključak

U ovom članku korisnik će saznati o načinu prenošenja niza u parametrima. Nizovi se mogu rukovati u mnogim slučajevima kada je u pitanju vraćanje vrijednosti ili prosljeđivanje u argumentima.