Witam i witam ponownie. Kontynuujmy naszą dyskusję na temat struktur i
porozmawiajmy o tym, jak są one powiązane z tablicami.
Rozmawialiśmy o tym, jak struktury są podobne do tablic i że możesz przechowywać więcej niż
jedną wartość, ale są one różne, ponieważ możesz mieć różne typy danych i możesz
je grupować w ten sposób.
Ale możesz też mieć podobne tablice struktur.
Widzieliśmy więc, jak użyteczna jest struktura i umożliwiająca logiczne grupowanie powiązanych ze
sobą elementów, widzieliśmy to. Wiemy, jak zdefiniować strukturę
z różnymi elementami za pomocą słowa kluczowego struct, używając
nazwy tagu.
Wiemy też, jak stworzyć zmienną tego typu.
Struktura jest zasadniczo nowym typem danych, których możesz użyć.
Następnie możesz uzyskać dostęp do elementów struktury za pomocą operatora wyboru elementu członkowskiego.
A co jeśli chcesz stworzyć wiele struktur
wewnątrz tablicy. Możesz to zrobić.
Na przykład konieczne jest śledzenie tylko jednej zmiennej zamiast trzech
dla każdej daty używanej przez program, to zaleta struktury.
Gdybyśmy chcieli obsłużyć 10 różnych dat w
programie, musielibyśmy śledzić tylko 10 różnych zmiennych zamiast 30.
Pamiętaj, że struktura zawiera w sobie trzy zmienne.
10 dla różnych zmiennych to wciąż sporo, więc
to naprawdę nie jest optymalna droga. Prawdopodobnie chciałbyś utworzyć tablicę.
Ponieważ miałbyś 10 takich samych typów, tak jakbyś miał 10 takich
samych int. Byłby tylko typ struktury.
Tak więc lepsza metoda obsługi 10
różnych dat polega na połączeniu dwóch potężnych funkcji języka programowania c,
struktur i tablic.
Możesz ich używać razem, aby uczynić go jeszcze potężniejszym.
Zatem zdefiniowanie tablicy struktur jest całkowicie słuszne.
Pojęcie tablicy struktur jest bardzo potężne i ważne w c, więc zwróć szczególną uwagę.
Deklarowanie tablicy struktur jest takie samo, jak deklarowanie dowolnego innego rodzaju tablicy.
Określasz typ, tak się składa, że jest to typ struktury.
Więc jeśli chcesz stworzyć tablicę struktur o
nazwie date, powinieneś powiedzieć
struct date, a następnie nazwę zmiennej, a następnie użyć
nawiasów, tak jak używasz nawiasów dla innych tablic, musisz określić rozmiar.
Więc w tym przypadku, jeśli tworzymy 10 instancji lub 10 elementów typu
struct date, powiedzielibyśmy 10 w tych nawiasach jako znak.
Więc to zdefiniowałoby tablicę o nazwie moje daty, która składa się z 10 elementów.
Każdy element w tablicy jest zdefiniowany jako data struct typu
bf, która zawiera trzy elementy.
Zasadniczo to, co robisz, to przechowywanie 30
różnych zestawów danych, 30 różnych elementów danych.
Aby zidentyfikować elementy tablicy struktur, należy
zastosować tę samą regułę, której używasz do poszczególnych struktur.
Nazwę struktury zapisujesz za pomocą operatora kropki, a następnie nazwy elementu.
Odwołanie się do konkretnego elementu struktury wewnątrz tablicy jest całkiem naturalne.
Aby ustawić drugą datę w tablicy my dates na 8 sierpnia
1986, wystarczy podać nazwę tablicy, moje daty
i określić indeks. Podajemy tutaj drugą datę.
Pamiętaj, tablice są oparte na 0. Więc mówimy 1, pod-1.
A potem, jeśli chcemy uzyskać dostęp do elementów tego
elementu tablicy lub członków tej struktury dla tego elementu, mówimy kropka miesiąc.
To da nam drugi element w mojej tablicy dat.
Wartość miesiąca dla tego typu struktury, a tutaj przypiszemy jej wartość 8.
a następnie, jeśli chcemy uzyskać dostęp do dnia, przypiszemy również dzień
8, ponieważ jest to 8 sierpnia. I wreszcie, jako rok, możemy powiedzieć, że
rok kropkowy równa się 1986.
W ten sposób możesz przypisać do drugiego elementu tablicy dat, trzy
różne zmienne, ponieważ jest to typ struct, date struct.
Powinieneś zauważyć, że tak naprawdę nie jest inaczej.
Jedyna różnica polega na tym, że masz kropkę. Zwykle powiedziałbyś po prostu, że moje daty są
równe 1 i to by było na tyle, ponieważ możesz przypisać tylko jedną zmienną w
zależności od typu tej tablicy.
Ale w tym przypadku możesz powiedzieć sub-1 z trzema różnymi zmiennymi,
ponieważ są to trzy elementy wewnątrz struktury.
Inicjowanie tablicy struktur.
Inicjalizacja tablic zawierających struktury jest podobna do inicjalizacji
tablic wielowymiarowych.
Pamiętaj, że w przypadku tablic wielowymiarowych stosowalibyśmy określoną
składnię z nawiasami klamrowymi na zewnątrz, a następnie nawiasami klamrowymi wewnątrz reprezentującymi każdy wiersz.
Kręcone szelki wewnątrz były w rzeczywistości opcjonalne, ale
dzięki temu były bardziej czytelne. Dlatego lubię przestrzegać tej konwencji.
W tym przykładzie tworzymy datę struktury dat, która będzie
miała rozmiar 5. Następnie zainicjujemy tylko pierwsze trzy elementy.
Podobnie jak tablica wielowymiarowa, w środku mamy
te nawiasy klamrowe. A więc pierwszy element w mojej tablicy dat, który
jest indeksem o wartości mniejszej niż zero. Powiemy, że miesiąc
to 12, data to 10, a rok to 1975.
A potem zrobimy to samo dla pierwszego elementu. Powiemy 12 30 1980.
Za trzeci element powiemy 11 15 2005.
A ponieważ nie dostarczyliśmy pozostałych dwóch elementów
w mojej tablicy dat, nie zostaną one zainicjowane.
Więc to wyznaczy pierwsze trzy daty.
W tablicy moja data to 12 10
1975, 12 30 1980 i 11 15 2005.
Wewnętrzne okresy nawiasów są opcjonalne, podobnie jak w obszarze wielowymiarowym są również opcjonalne.
Ale znowu ułatwia to czytanie, łatwiejsze do naśladowania z tymi wewnętrznymi nawiasami
klamrowymi, przestrzegałbym tej konwencji.
Więc możesz to zrobić, jeśli chcesz
pozbyć się nawiasów klamrowych, ale jest to trochę trudniejsze
do naśladowania, ponieważ teraz masz tylko przecinki oddzielone przecinkami lub elementy oddzielone przecinkami
i może to być bardzo zagmatwane, jeśli robisz dużo tych.
Musisz to poprawnie odwzorować, powiedzmy, że jestem w czwartym
czwartym elemencie dla mojego czwartego przecinka, ok, to
będzie drugi element tablicy, trudniej jest naśladować, więc użyj tych w nawiasach klamrowych.
Jeśli chcesz zainicjować tylko trzeci element tablicy do określonej wartości,
możesz określić moje daty poniżej 5.
Nadal tworzysz tutaj tablicę.
Nadal deklarujesz zmienną i ustawiasz rozmiar na pięć.
Ale wewnątrz nawiasów klamrowych
mówisz dwa nawiasy wewnętrzne i
zamierzasz zainicjować 2 do 12 10 1975.
Więc zobaczysz nawiasy kwadratowe, które reprezentują element, który chcesz zainicjować,
następnie operator przypisania jest równy, a następnie wewnątrz nawiasów
klamrowych inicjalizujesz miesiąc, dzień i rok dla
elementów wewnątrz struktury.
Możesz więc dokładnie określić, który element chcesz również zainicjować.
Jeśli chcesz ustawić miesiąc i dzień jako drugi element tablicy my dates na 12 i 30,
możesz zrobić coś bardzo podobnego.
Po prostu zrób przecinek, aby oddzielić każdy atrybut.
Nie chcesz tak naprawdę ustawiać roku, więc chcesz móc używać tych aparatów ortodontycznych.
Można powiedzieć, że kropka miesiąc równa
się 12 punktom 1 dnia równa się 30.
I znowu ta składnia wygląda bardzo podobnie do inicjalizacji zmiennych
strukturalnych w innym miejscu.
Jedyna różnica polega na tym, że jest to tablica, musisz określić indeks
tablicy, ale podobną składnię.
A co ze strukturami zawierającymi tablice.
Elementy wewnątrz struktury, które zawierają tablicę.
Możliwe jest również znalezienie struktur zawierających tablicę jako element członkowski.
To może być przydatne.
Najczęstszym zastosowaniem jest ustawienie tablicy znaków wewnątrz struktury.
Używamy tablic char całkiem dobrze w przypadku łańcuchów.
Dlatego bardzo często struktura zawierałaby ciąg znaków, tablicę
znaków.
Załóżmy więc, że chcesz zdefiniować strukturę
o nazwie miesiąc, która zawiera jako elementy składowe liczbę
dni w miesiącu, a także trzyznakowy skrót nazwy miesiąca.
Cóż, w tym miejscu moglibyśmy użyć tablicy znaków. Można powiedzieć, że struct month.
Wiemy, jak zdefiniować strukturę. Ponownie, nie jest to przydzielanie żadnej pamięci.
Tak definiuje się strukturę. To są elementy, które są w nim zawarte.
Tutaj używamy słowa kluczowego struct. Podajemy nazwę struktury. Nazwa tagu to miesiąc,
po czym mamy lewy nawias klamrowy i określamy elementy.
Mamy jeden element, który jest liczbą całkowitą reprezentującą liczbę dni, przez które na końcu mamy średnik.
Następnie mamy tablicę znaków, nazwa znaku
pod-trzy, czyli rozmiar trzy, ponieważ ma trzy znaki.
Następnie kończymy strukturę prawym nawiasem klamrowym w średniku.
Pamiętaj jednak, że znaki są tablicami i są blisko spokrewnione ze wskaźnikami, o czym już wiemy.
Ale możesz łatwo mieć struktury zawierające tablice, po prostu umieszczając
je jako element składowy.
W ten sposób powstaje struktura miesiąca, która zawiera
liczbę całkowitą o nazwie liczba dni i element członkowski będący znakiem o nazwie imię.
Nazwa członka to w rzeczywistości tablica trzech znaków, całkiem prosta.
Jak więc masz do niego dostęp. Cóż, najpierw musisz utworzyć zmienną.
Zmienna stworzyłaby pamięć dla elementów wewnątrz struktury, a następnie chciałbyś po
prostu ustawić odpowiednie pola w zmiennej 8-miesięcznej, tablicy znaków,
ponieważ tak się nazywała. Mieliśmy nazwisko i
liczbę dni. Tutaj nazywa się imię, a na przykład miesiąc.
Miesiąc to typ zmiennej, a nazwa to typ elementu, więc to prawda.
Więc tutaj tworzymy strukturę. To typowy miesiąc.
To nazwa zmiennej to miesiąc. Nie inicjalizujemy go niczym.
Natychmiast ustawiliśmy miesiąc na 31 dni.
Używamy tego operatora wyboru elementu kropkowego.
A potem chcemy przypisać do tablicy znaków, nie
możemy przypisać bezpośrednio do tablicy znaków.
Musiałbyś zrobić porównanie str lub coś, jeśli chciałbyś podpisać wszystko. I możesz to zrobić.
Nie musisz używać tych indeksów. Możesz powiedzieć str copy
a month nazwa kropka przecinek, a następnie j
a n w podwójnych cudzysłowach lub możesz to zrobić, gdy uzyskujesz dostęp
do elementów tablicy za pośrednictwem indeksu.
Tutaj mówimy o nazwie kropki miesiąca, ponieważ musimy uzyskać dostęp do
zmiennej składowej nazwy lub elementu członkowskiego.
Następnie w nawiasach podajemy indeks tablicy.
Znajdziemy go podpisując pierwszy znak w tablicy j, drugi a, trzeci n.
Widziałbyś tę składnię, gdybyś wykonywał ints,
double i floats. Zwykle, gdy masz
tablicę znaków, użyjesz funkcji str stir copy i przypiszesz wszystko podwójnymi cudzysłowami.
Możesz również zainicjować zmienną na te same wartości, robiąc
coś bardzo podobnego podczas deklarowania zmiennej. Tylko w nawiasach klamrowych,
ponieważ jest to tablica, możesz mieć
wewnętrzne nawiasy klamrowe, a następnie pojedyncze cudzysłowy wokół każdego znaku.
W tablicy można ustawić struktury 12-miesięczne reprezentujące każdy miesiąc roku.
Teraz możemy utworzyć
zmienną miesiąca, która jest tablicą o rozmiarze 12 typu struct month,
która może reprezentować każdy miesiąc.
A potem dla każdego miesiąca możemy spędzić liczbę dni, a następnie skróty dla miesiąca.
Tak więc wykorzystanie tych dwóch potężnych koncepcji tablic
i struktur jest bardzo, bardzo przydatne.
Struktury mogą mieć wiele
elementów, więc w rzeczywistości mogą być strukturą tablic, a
elementy wewnątrz struktury mogą być tablicami.
A teraz porozmawiamy o tym, jak możemy używać struktur do zawierania innych elementów, takich jak wskaźniki.
Ale zobaczysz, że struktury mogą przechowywać dowolny typ danych
w wielu różnych typach danych.
Jest to bardzo, bardzo przydatne w przypadku koncepcji tablic.
Mam nadzieję, że to było pomocne. Ponownie, będziemy mieli wyzwanie, aby
zademonstrować niektóre z tych koncepcji i przywołać kilka
przykładów w blokach kodu później. Dziękuję Ci.