using arrays with functions c
Wszystko, co musisz wiedzieć o tablicach z funkcjami w C ++:
W tym samouczku omówimy, jak tablice mogą być używane z funkcjami w C ++. Generalnie tablice mogą być przekazywane do funkcji jako argumenty w taki sam sposób, w jaki przekazujemy zmienne do funkcji.
Jednak ocena parametrów formalnych jest nieco inna w przypadku tablic. Zanim faktycznie zbadamy przekazywanie tablic do funkcji, musimy pokrótce omówić pojęcie wskaźnika do tablicy.
=> Sprawdź szczegółowe samouczki szkoleniowe C ++ tutaj.
Czego się nauczysz:
- Wskaźnik do tablicy
- Przekazywanie tablic do funkcji
- Zwracanie tablic z funkcji
- Wniosek
- rekomendowane lektury
Wskaźnik do tablicy
Rozważ następującą tablicę zawierającą pięć pierwszych liczb ciągu Fibonacciego.
int fibSeq[5] = {1,1,2,3,5};
Zadeklarujmy wskaźnik fibPtr wskazujący na tę tablicę.
int* fibPtr; fibPtr = fibSeq;
Kiedy drukujemy zawartość fibPtr, wyjście będzie pierwszym elementem tablicy fibSeq. Dzieje się tak, ponieważ wynikiem nazwy tablicy bez nawiasów kwadratowych jest wskaźnik do pierwszego elementu tablicy. Zatem w powyższym przykładzie nazwa „fibSeq” wskazuje na pierwszy element tablicy „fibSeq”.
Poniżej znajduje się obrazowe przedstawienie tego samego:
Jak pokazano na powyższym obrazku, fibPtr wskazuje na pierwszy element tablicy. Zatem używając arytmetyki wskaźnika, możemy wydrukować wszystkie elementy tablicy, używając po prostu fibPtr.
Na przykład, wyrażenie * (fibPtr + 1) wskaże drugi element tablicy i tak dalej.
jakość wywiadu analityków pytania i odpowiedzi pdf
Umieśćmy to w programie i sprawdźmy wyniki „fibSeq” i „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); } }
Wynik:
fibSeq wskazuje na: 1
fibSeq [0]: 1
fibSeq [1]: 1
fibSeq [2]: 2
fibSeq [3]: 3
fibSeq [4]: 5
W powyższym przykładzie deklarujemy zmienną wskaźnikową fibPtr, a następnie ustawiamy wskazanie tablicy, przypisując nazwę tablicy do fibPtr. Kiedy to robimy, ustawiamy fibPtr na pierwszym elemencie tablicy. Następnie wypisujemy wszystkie wartości tablicy przy użyciu fibPtr.
Przekazywanie tablic do funkcji
Kiedy mamy do czynienia z funkcjami, przekazujemy tablice do funkcji w podobny sposób, jak przekazujemy zmienne do funkcji. Ale nie przekazujemy zmiennej tablicowej typu [].
Zamiast tego przekazujemy wskaźnik do tablicy, czyli nazwę tablicy, która wskazuje na pierwszy element tablicy. Wtedy formalny parametr, który akceptuje ten wskaźnik, jest w rzeczywistości zmienną tablicową. Przekazując wskaźnik, możemy bezpośrednio modyfikować tablicę wewnątrz funkcji.
Rozważmy następujący program, który oblicza kwadrat każdego elementu z pierwszych pięciu elementów w sekwencji Fibonacciego, aby zademonstrować przekazanie tablicy do funkcji.
#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<W powyższym przykładzie obliczamy kwadrat każdego elementu w ciągu Fibonacciego. Ten kwadrat jest obliczany wewnątrz funkcji. Dlatego przekazujemy nazwę tablicy do funkcji „fibSeqSquare” podczas wywoływania funkcji z main. Wewnątrz funkcji obliczamy kwadraty każdego elementu.
Ponieważ przekazaliśmy odwołanie do tablicy za pomocą wskaźnika, wszelkie modyfikacje tablicy wewnątrz funkcji będą odzwierciedlać tablicę. Stąd, kiedy drukujemy tablicę w funkcji głównej, otrzymujemy kwadraty każdego elementu jako wynik.
W powyższym przykładzie widzieliśmy, że argument tablicy (parametr formalny) funkcji fibSeqSquare nie określa rozmiaru tablicy, a jedynie nawiasy kwadratowe ([]), aby wskazać, że jest to tablica. Jest to jeden ze sposobów określenia argumentów tablicy.
Innym sposobem określenia argumentu tablicy na liście parametrów formalnych jest określenie rozmiaru tablicy w nawiasach kwadratowych. Oba argumenty działają podobnie. To są po prostu dwa sposoby, w jakie określamy argumenty tablicowe.
Poniższy przykład przedstawia argument Array określony za pomocą size.
#include #include using namespace std; void displayFibSeq(int fibSeq[5]) { for(int i=0;i<5;i++) { cout<Powyższy przykład zawiera funkcję wyświetlającą ciąg Fibonacciego. Funkcja ma parametr jako tablicę, w której określiliśmy również rozmiar tablicy.
Możemy również przekazywać wielowymiarowe tablice do funkcji w taki sam sposób, jak pokazano powyżej.
czym są testy beta i jak są używane
Zwracanie tablic z funkcji
Jeśli chodzi o zwracanie tablicy z funkcji, C ++ nie pozwala nam zwrócić całej tablicy z funkcji. Możemy jednak sprawić, że funkcja zwróci wskaźnik do tablicy. Ale jest w tym haczyk.
Rozważmy następujący fragment kodu:
int* funcArray() { int arr[3] = {1,2,3}; return arr; } int main() { int* aryPtr = funcArray(); cout< Chociaż powyższy program po prostu zwraca wskaźnik do pierwszego elementu tablicy z funkcji, nie działa zgodnie z oczekiwaniami. Nie możemy zagwarantować, że program poda nam prawidłowe dane wyjściowe. Może, ale nie musi, dawać poprawne wyniki.
Dzieje się tak, ponieważ zwracamy zmienną lokalną z funkcji i nie jesteśmy pewni, czy będzie ona objęta zakresem w momencie zwrócenia, czy nie.
char na int w c ++
Zatem, w skrócie, C ++ nie faworyzuje zwracania tablic z funkcji.
Jeśli w ogóle musimy zwrócić tablice z funkcji, musimy użyć jednej z następujących metod:
# 1) Zwracanie tablic alokowanych dynamicznie
Możemy zwrócić wskaźnik tablicy z dynamicznie przydzielonej tablicy. Używamy operatora „new” do dynamicznego przydzielania tablicy. Ponieważ jest to tablica dynamiczna, będzie objęta zakresem, chyba że „usuniemy” tablicę. Dlatego program będzie działał poprawnie, gdy zwrócimy tablicę.
Jest to pokazane w poniższym przykładzie.
#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< Wynik:
1 2 3
# 2) Zwracanie tablic statycznych
Ponieważ zmienne / tablice statyczne mają zakres w całym programie, możemy również zwracać tablice statyczne z funkcji. Aby to zademonstrować, możemy posłużyć się przykładem. Jest to to samo, co w poprzednim przykładzie, z tą różnicą, że w tym przykładzie użyliśmy tablicy statycznej zamiast tablicy alokowanej dynamicznie.
#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< Wynik:
1 2 3
Uwaga : Możemy również użyć struktury, aby zawinąć tablicę wewnątrz niej, a następnie zwrócić tę strukturę. W ten sposób naturalnie zwrócimy tablicę z funkcji. Ale nie jest to bardzo realna metoda zwracania tablic.
Wniosek
Dlatego w tym samouczku szczegółowo omówiliśmy tablice w odniesieniu do funkcji. Mamy nadzieję, że ten samouczek pomógłby wyjaśnić wszystkie wątpliwości i nieporozumienia dotyczące tablic i funkcji języka C ++.
=> Sprawdź doskonały przewodnik szkoleniowy C ++ tutaj.
rekomendowane lektury