Witam i witam ponownie.
W tym wykładzie chcę porozmawiać o związku między wskaźnikami a tablicami.
Istnieje silny związek i musimy go zrozumieć, zanim będziemy mogli
mówić o arytmetyce wskaźnikowej. Więc zacznijmy.
Tablica to zbiór obiektów tego samego typu, do
których można się odwoływać, używając jednej nazwy. Wiemy, że już całkiem nieźle radzimy sobie z tablicami.
Tablicy znaków używamy teraz przez kilka sekcji.
Jest to tablica, do której można uzyskać dostęp za pomocą
indeksu lub indeksu w tych nawiasach. Pamiętamy o tym.
Wiemy, że tablice są liczone od zera, zaczynają się od zera.
Ale znowu, jest to po prostu sposób na przechowywanie wielu miesięcy o tej samej nazwie zmiennej.
Wskaźnik to zmienna, która ma swoją wartość, adres pamięci jako wartość
i może
odwoływać się do innej zmiennej lub stałej danego typu.
W tym miejscu powinniśmy również jasno określić, czym jest wskaźnik.
Po prostu przechowuje adres pamięci.
Możesz użyć wskaźnika do przechowywania adresów różnych zmiennych w różnym czasie.
Ale musisz mieć ten sam typ. Wskaźnik int musi
wskazywać, aby przywrócić adres typu int.
Tablice i wskaźniki wydają się całkiem różne,
ale są bardzo blisko spokrewnione i czasami mogą być używane zamiennie, szczególnie
w przypadku tablicy znaków.
Możesz faktycznie stworzyć znak zapamiętany, który jest łańcuchem
znaków i możesz stworzyć wskaźnik znaku, który jest w zasadzie tym samym.
Istnieją tylko niewielkie różnice w
tym, czy alokujesz pamięć i zwalniasz ją za pomocą wskaźnika znakowego.
W przypadku tablicy znaków nie musisz
tego robić, ale znak a ma również stały rozmiar.
Więc jeśli utworzysz ciąg tablicy znaków
z 20 jako rozmiarem, możesz przechowywać tylko 19 znaków.
Dzięki wskaźnikowi znakowemu możesz używać dynamicznego zarządzania pamięcią
i możesz zwiększać lub zmniejszać rozmiar, może to być bardziej
wydajne w odniesieniu do pamięci.
Ale jednym z najczęstszych zastosowań wskaźników w c są wskaźniki do tablic.
To wtedy najczęściej
używasz wskaźników, zwłaszcza do znaków.
Wskaźnik znaków jest taki sam jak tablica znaków.
Główne powody używania wskaźników
do usuwania to wygoda notacji i efektywność programu.
Możesz więc w wielu przypadkach użyć jednej tablicy lub wskaźnika, z wyjątkiem
sytuacji, gdy mówisz o dynamicznym zarządzaniu pamięcią.
Ale w większości przypadków możesz. I tak naprawdę jedyną różnicą jest
składnia, to notacja.
Chodzi o to, czy używasz indeksu dolnego, aby uzyskać dostęp
do elementu, czy też używasz arytmetyki
punktów, niezależnie od tego, czy używasz wskaźnika znakowego, aby wskazać konkretny adres tego elementu.
Bardziej efektywne jest również używanie wskaźników znaków.
Wskaźniki do tablic generalnie powodują, że kod zużywa mniej pamięci i jest wykonywany szybciej.
Chcesz więc używać wskaźnika do znaków tak często, jak to
możliwe, a także wskaźnika do innych typów danych.
Ponieważ jest szybszy i zużywa mniej pamięci. W większości przypadków wskaźniki nad tablicami.
Jeśli masz tablicę 100 liczb całkowitych, wiemy,
co to oznacza, po prostu mówisz, że wartość int to 100. 100 to rozmiar.
Oznacza to, że w tej tablicy można przechowywać 100 liczb całkowitych.
Możesz także zdefiniować wskaźnik. Nadamy mu nazwę wskaźnik wartości, ponieważ
wskazuje on tablicę wartości i
może być użyty do uzyskania dostępu do liczb całkowitych zawartych w tej tablicy.
Więc po prostu mówimy wskaźnik wartości instar. W tym momencie wiemy, jak zadeklarować wskaźnik.
Podczas definiowania wskaźnika używanego do wskazywania elementów
tablicy nie oznacza się wskaźnika jako wskaźnika typu do tablicy.
Do tego momentu wszystko, o czym kiedykolwiek słyszeliśmy, to wskaźnik do
końca, wskaźnik do podwójnego.
Ale kiedy używasz tablic, nie mówisz o tablicy wskazanej.
Ten rzeczywisty wskaźnik wskazuje na określony element zawarty w tablicy.
Więc miej to na uwadze. W rzeczywistości nie jest to
cała tablica, gdy wyczyścisz wskaźnik z adresem wartości.
Aby więc ustawić wskaźnik wartości tak, aby wskazywał na pierwszy element tablicy wartości, wystarczy
powiedzieć, że wartości wskazują lub równa się wartościom.
Nie musisz umieszczać tam adresu ani nic. Ponieważ
tablica wartości jest wskaźnikiem.
To, co musisz wbić w głowę, to wszystkie
te tablice są wskazówkami pod maską.
Więc jeśli chcesz przypisać pierwszy element
tablicy do wskaźnika, wszystko, co musisz zrobić, to określić tablicę po prawej
stronie operatora równości, a
po lewej stronie masz tylko wskaźnik wartości.
Będzie to wskazywać na pierwszy adres w tablicy lub na pierwszy element.
Zauważ, że operator adresu nie jest używany.
Kompilator c traktuje wygląd nazwy tablicy bez
indeksu jako wskaźnik do tablicy.
Zatem określenie wartości bez indeksu dolnego
skutkuje utworzeniem wskaźnika do pierwszego elementu wartości.
Oznacza to, że możesz teraz wskazywać kolejne wartości
w tablicy, po prostu zwiększając wskaźnik, aby przejść do następnego adresu.
I o tym będziemy mówić w następnych kilku wykładach, kiedy będziemy mówić o arytmetyce punktowej.
I to jest tak naprawdę tylko kwestia notacji, a także kwestia wydajności.
Tak więc równoważnym sposobem tworzenia wskaźnika do początku wartości jest zastosowanie
adresu operatora do pierwszego elementu po prawej stronie.
Więc możesz to zrobić na dwa sposoby, każdy z nich jest w porządku.
Ale możesz też to zrobić. Można powiedzieć, że adres wskaźnika wartości poniżej zera.
Spowoduje to ustawienie wskaźnika wartości na pierwszy element tablicy.
Możesz więc użyć tego lub po prostu powiedzieć, że wartość punkt równa się wartość.
Oczywiście bez znaku ampersand i bez indeksu
dolnego jest to trochę mniej kodu lub łatwiejsze do napisania.
Może to być trochę bardziej
jasne, ponieważ niekoniecznie wiesz, że wartości są tablicą, chyba że spojrzysz na deklarację.
Ale znowu, tak czy inaczej jest w porządku. Wskaźnik wartości jest równy wartości lub
wskaźnik wartości jest równy adresowi wartości poniżej zera.
To kwestia preferencji programisty. I znowu jest to notacja.
Powtórzę, że
gdy masz dwa wyrażenia ar sub-i
i gwiazdka ar plus i, mają
one równoważne znaczenie.
Chcemy się więc upewnić, że to rozumiesz.
Obie działają, jeśli ar jest nazwą tablicy.
Możesz użyć wskaźnika i możesz go usunąć.
Oba działają, jeśli jest to zmienna wskaźnikowa.
Użyj wyrażenia takiego jak ar plus plus działa tylko wtedy, gdy ar jest zmienną wskaźnikową.
Nie możesz więc inkrementować tablicy, mówiąc
plus plus i oczekiwać, że przejdzie do następnego elementu.
Możesz to zrobić tylko na wskaźnikach tablicowych lub wskaźnikach.
Więc jeśli mamy ar, który jest wskaźnikiem wskazującym na tablicę i chcemy przejść do
następnego elementu, możemy po prostu za każdym razem go inkrementować.
Ale jeśli powiesz ar sub-i, ponieważ ar sub i jest tablicą,
a tablica jest wskaźnikiem, możesz odwołać się do niej, mówiąc ar, który
jest ar, jest wskaźnikiem,
który przypisaliśmy ar plus i, to jest to samo.
W następnych kilku wykładach będziemy mówić o arytmetyce punktów,
a to silnie wiąże się ze związkiem między tablicami a wskaźnikami.
Wskaźniki mogą być tablicami. To nie jest tablica wskaźników, to element.
Możesz więc użyć adresu wskaźnika do poruszania
się po tablicy, iteracji
po tablicy. Dziękuję Ci.