using arrays with functions c
Všetko, čo potrebujete vedieť o poliach s funkciami v C ++:
V tomto výučbe sa dozvieme, ako možno polia používať s funkciami v C ++. Polia sa dajú do funkcií vo všeobecnosti odovzdať ako argumenty rovnakým spôsobom, ako ich odovzdávame premenným.
Ale hodnotenie formálnych parametrov je mierne odlišné, pokiaľ ide o polia. Predtým, ako skutočne preskúmame prechod polí na funkcie, musíme v krátkosti prediskutovať koncept ukazovateľa na pole.
=> Tu si pozrite podrobné výukové návody C ++.
Čo sa dozviete:
- Ukazovateľ na pole
- Prebieha odovzdávanie polí do funkcie
- Vracanie polí z funkcií
- Záver
- Odporúčané čítanie
Ukazovateľ na pole
Zvážte nasledujúce pole obsahujúce prvých päť čísel Fibonacciho sekvencie.
int fibSeq[5] = {1,1,2,3,5};
Vyhlásime ukazovateľ fibPtr, ktorý nasmeruje toto pole.
int* fibPtr; fibPtr = fibSeq;
Keď vytlačíme obsah fibPtr, výstup bude prvým prvkom poľa fibSeq. Je to preto, lebo názov poľa bez hranatých zátvoriek sa vyhodnocuje ako ukazovateľ na prvý prvok poľa. Vo vyššie uvedenom príklade teda názov „fibSeq“ ukazuje na prvý prvok poľa „fibSeq“.
Nižšie je ich obrazové znázornenie:
Ako je zrejmé z vyššie uvedeného obrázkového znázornenia, fibPtr ukazuje na prvý prvok poľa. Pomocou aritmetiky ukazovateľa teda môžeme vytlačiť všetky prvky poľa iba pomocou fibPtr.
Napríklad, výraz * (fibPtr + 1) bude ukazovať na druhý prvok poľa atď.
ako otvoriť súbor json v systéme Windows
Poďme to do programu a skontrolujte výstupy „fibSeq“ a „fibPtr“:
#include #include using namespace std; int main() { int fibSeq[5] = {1,1,2,3,5}; int* fibPtr; fibPtr = fibSeq; cout<<'
fibSeq points to :'<<*fibSeq; cout<<'
fibSeq[0]: '<<*fibPtr; cout<<'
fibSeq[1]: '<<*(fibPtr + 1); cout<<'
fibSeq[2]: '<<*(fibPtr + 2); cout<<'
fibSeq[3]: '<<*(fibPtr + 3); cout<<'
fibSeq[4]: '<<*(fibPtr + 4); } }
Výkon:
fibSeq ukazuje na: 1
fibSeq [0]: 1
fibSeq [1]: 1
fibSeq [2]: 2
fibSeq [3]: 3
fibSeq [4]: 5
Vo vyššie uvedenom príklade deklarujeme ukazovateľovú premennú fibPtr a potom ju nasmerujeme na pole priradením názvu poľa k fibPtr. Keď to urobíme, urobíme fibPtr tak, aby ukazoval na prvý prvok poľa. Potom pomocou fibPtr vytlačíme všetky hodnoty poľa.
Prebieha odovzdávanie polí do funkcie
Keď máme do činenia s funkciami, odovzdávame pole funkcii podobným spôsobom, ako odovzdávame premenné funkcii. Ale neprechádzame premennú poľa typu [].
Namiesto toho odovzdáme ukazovateľ na pole, tj. Názov poľa, ktorý smeruje na prvý prvok poľa. Potom formálny parameter, ktorý prijíma tento ukazovateľ, je v skutočnosti premenná poľa. Keď minieme ukazovateľ, môžeme priamo upraviť pole vo vnútri funkcie.
Zvážte nasledujúci program, ktorý počíta štvorec každého prvku prvých piatich prvkov v sekvencii Fibonacci, aby demonštroval odovzdanie poľa funkcii.
#include #include using namespace std; void fibSeqSquare(int fibSeq[]) { for(int i=0;i<5;i++) { fibSeq[i] *= fibSeq[i]; } } int main() { int fibSeq[5] = {1,1,2,3,5}; fibSeqSquare(fibSeq); for(int i=0;i<5;i++) { cout<Vo vyššie uvedenom príklade vypočítame štvorec každého prvku vo Fibonacciho postupnosti. Tento štvorec sa počíta vo vnútri funkcie. Preto pri volaní funkcie z main odovzdávame názov poľa funkcii „fibSeqSquare“. Vo vnútri funkcie vypočítame štvorce každého prvku.
Keď sme odovzdali odkaz na pole cestou ukazovateľa, akékoľvek úpravy, ktoré vykonáme v poli vo vnútri funkcie, budú pole odrážať. Preto keď tlačíme pole v hlavnej funkcii, dostaneme druhé mocniny každého prvku ako výstup.
Vo vyššie uvedenom príklade sme videli, že argument poľa (formálny parameter) funkcie fibSeqSquare nešpecifikuje veľkosť poľa, ale iba hranaté zátvorky ([]), ktoré naznačujú, že ide o pole. Toto je jeden spôsob zadania argumentov poľa.
Ďalším spôsobom, ako zadať argument poľa vo formálnom zozname parametrov, je zadanie veľkosti poľa v hranatých zátvorkách. Oba argumenty fungujú podobne. Toto sú jednoducho dva spôsoby, ako určujeme argumenty poľa.
Nasledujúci príklad ukazuje argument poľa zadaný s veľkosťou.
#include #include using namespace std; void displayFibSeq(int fibSeq[5]) { for(int i=0;i<5;i++) { cout<Vyššie uvedený príklad má funkciu na zobrazenie Fibonacciho sekvencie. Funkcia má parameter ako pole, kde sme určili aj veľkosť poľa.
Rovnakým spôsobom, ako je uvedené vyššie, môžeme funkciám odovzdať aj viacrozmerné polia.
otázky a odpovede na pohovor s aplikačnou podporou pdf
Vracanie polí z funkcií
Pokiaľ ide o vrátenie poľa z funkcie, C ++ nám neumožňuje vrátiť celé pole z funkcie. Môžeme však urobiť funkciu na vrátenie ukazovateľa do poľa. Je v tom však háčik.
Zvážte nasledujúci kód:
int* funcArray() { int arr[3] = {1,2,3}; return arr; } int main() { int* aryPtr = funcArray(); cout< Aj keď vyššie uvedený program jednoducho vráti ukazovateľ na prvý prvok poľa z funkcie, nefunguje podľa očakávania. Nemôžeme zaručiť, že program nám dá správny výstup. Môže, ale nemusí poskytovať správny výstup.
Je to z toho dôvodu, že vraciame lokálnu premennú z funkcie a nie sme si istí, či do jej vrátenia bude alebo nebude v rozsahu.
Stručne povedané, C ++ teda neuprednostňuje vracanie polí z funkcií.
Ak vôbec potrebujeme vrátiť pole z funkcie, musíme použiť ktorúkoľvek z nasledujúcich metód:
# 1) Vrátenie dynamicky pridelených polí
Ukazovateľ poľa môžeme vrátiť z dynamicky alokovaného poľa. Na dynamické pridelenie poľa používame operátor „nový“. Keďže ide o dynamické pole, bude v rozsahu, pokiaľ pole „neodstránime“. Program teda bude fungovať dobre, keď vrátime pole.
Toto je uvedené v nasledujúcom príklade.
#include #include using namespace std; int* funcArray() { int* arr = new int[3]; arr[0]=1; arr[1]=2; arr[2]=3; return arr; } int main() { int* aryPtr = funcArray(); cout< Výkon:
1 2 3
# 2) Vracanie statických polí
Pretože statické premenné / polia majú rozsah v celom programe, môžeme statické polia vracať aj z funkcií. Môžeme si vziať príklad, ktorý to demonštruje. Je to to isté ako v predchádzajúcom príklade s jediným rozdielom, že v tomto príklade sme namiesto dynamicky prideleného poľa použili statické pole.
#include #include using namespace std; int* funcArray() { static int arr[3]; arr[0]=1; arr[1]=2; arr[2]=3; return arr; } int main() { int* aryPtr = funcArray(); cout< Výkon:
ako vytvoriť falošnú e-mailovú adresu
1 2 3
Poznámka : Môžeme tiež použiť štruktúru na zabalenie poľa do nej a následnú návrat tejto štruktúry. Týmto spôsobom prirodzene vrátime pole z funkcie. Toto však nie je veľmi uskutočniteľná metóda vracania polí.
Záver
Preto sme v tomto výučbe podrobne diskutovali o poliach týkajúcich sa funkcií. Dúfame, že tento výukový program by pomohol objasniť všetky pochybnosti a mylné predstavy o poliach a funkciách C ++.
=> Vyskúšajte tu dokonalého školiaceho sprievodcu jazykom C ++.
Odporúčané čítanie