Witam i witam ponownie.
Ponieważ arytmetyka punktowa jest pojęciem trudnym do zrozumienia i
zrozumienia, chciałem przejść przez ostatni
przykład, który naprawdę demonstruje tę koncepcję, robi dobrą robotę.
A jeśli zrozumiesz ten przykład, nie będziesz
mieć problemu z arytmetyką punktową.
Tak więc pierwszym przykładem, który chcę wam pokazać,
jest efekt dodania wartości całkowitej do wskaźnika.
Więc kiedy wykonujemy arytmetykę wskaźników z dodawaniem,
możemy faktycznie zobaczyć, jak to działa pod względem adresów.
Więc tutaj, w tym programie, wszystko, co robię, to tworzenie
łańcucha, tablicy znaków, nazywa się to łańcuchem.
A potem tworzę wskaźnik znaku o nazwie p.
Przechodzę przez całą długość ciągu, który jest
wielokrotny. Więc przechodzę przez całą tablicę.
Wystarczy wymienić podstawową dla długości pętli o wielu rozmiarach i wielu.
A potem wypisuję każdy rzeczywisty
ciąg lub znak wewnątrz tej tablicy.
A także to, co robię, że wyświetlam
adres, a
następnie adres z rzeczywistym numerem, który do niego dodałem.
Spójrzmy więc tylko na wynik tego, ponieważ dane
wyjściowe pokazują naprawdę dobry przykład arytmetyki punktowej.
Więc przejdźmy do bloków kodu i uruchommy to.
Więc tutaj jesteśmy w blokach kodu. Trochę wyczyściłem kod.
Używam długości strn, ustawiam długość strn, ponieważ jest to dodatkowe uwzględnienie.
Chcę to po prostu uruchomić.
Więc kiedy to uruchomię, zauważysz, że pokazuje ci,
jak zapamiętujesz, jak wygląda pamięć, i pokazuje wartości,
wykonując arytmetykę punktową. Więc jeśli powiesz, że wiele
pod-0, pamiętaj, że wiele zawiera po prostu ciąg.
Ale jeśli spojrzymy na to i powiemy, że spójrz
na zawartość tablicy, wielokrotności 0 to a, wielokrotności 1 to spacja, a reszta to ciąg.
To jest tablica.
Tuż obok to to samo, co dodanie 0 do wskaźnika i
wyłuskanie go, dodanie 1 i dodanie 2.
I pokazuje, jak można wykonać arytmetykę wskaźnika, wyłuskując sam
wskaźnik i dodając do niego liczby.
Czyli wskaźnik plus siedem dereferencji, które otrzymujesz g.
Następnie w trzeciej kolumnie pokazuję rzeczywiste adresy
w miarę zwiększania. Zatem adresy każdego elementu
w tablicy przy użyciu znaku ampersand tylko w tablicy
znaków, widzimy adres 060feff dla elementu 0 i tak dalej.
A potem patrzymy na adresy, jeśli po
prostu dodamy do samego wskaźnika bez wyłuskiwania go, a
zobaczysz, że adresy są wyrównane.
Następnie możemy spojrzeć na składnię, aby zobaczyć, co się tutaj dzieje w
kategoriach pierwszej rzeczy, którą faktycznie wyświetlamy, to indeks tablicy, który jest po prostu licznikiem.
Następnie wyświetlamy procent c, który jest
znakiem w tablicy.
Następną rzeczą, którą wyświetlamy, jest
dereferencja wskaźnika plus I.
Więc tutaj wyświetlamy I, a następnie
wyświetlamy dereferencję wskaźnika plus I, rzeczywista
wartość.
Więc
wyświetlamy jako d
tylko rzeczywisty licznik, a następnie punkt c
to nasza dereferencja. Więc p jest naszym wskaźnikiem.
Mówimy po prostu p plus ja, arytmetyka wskaźnika, a
następnie dereferencjonujemy to.
A następnie, aby uzyskać
adresy, wszystko, co musimy zrobić, aby uzyskać adres tablicy,
to powiedzieć ampersand wielokrotność, a następnie indeks.
Aby uzyskać pierwszy adres wskaźnika, po prostu mówimy p
plus
I, aby uzyskać rzeczywisty licznik,
który pokazuje, jak zwiększamy to p, po
prostu robimy p plus procent d.
Ale robi dobrą robotę, demonstrując
różne sposoby, w jakie pamięć, którą wskazujemy na
adresy, jest faktycznie
wyświetlana i jak są one
równoważne z różnymi indeksami w tablicy i faktycznymi wskaźnikami.
Myślałem, że to wykonało dobrą robotę.
Chcę spojrzeć na jeszcze jeden przykład, który wykonuje inną dobrą robotę
w zakresie arytmetyki wskaźników z długimi długościami. Ponieważ tutaj są to
liczby całkowite. Więc wszystko, co musimy zrobić, to dodać
jeden i automatycznie przejść do następnego bajtu i tak dalej. Spójrzmy, co robimy, tęsknimy.
W tym przykładzie chciałem również po prostu zademonstrować, jak można zrobić to
samo za pomocą długiego i długiego wskaźnika.
Ze wskaźnikiem znakowym była to po prostu tablica znaków ciągu.
Ale nawet w przypadku długich tablic, które mają różne
rozmiary, nadal możemy je iterować za pomocą wskaźnika
i można zobaczyć, jak faktycznie zmienia się liczba bajtów.
Więc nawet jeśli mówimy, że mamy długi wskaźnik i dodajemy do niego jeden, w rzeczywistości dodajemy
do niego 4 bajty, ponieważ long jest trochę większy i zobaczymy to w tym przykładzie.
A teraz uruchommy ten przykład w blokach kodu.
Oto nasz przykład. Znowu mamy licznik całkowity, licznik pętli.
Mamy długą tablicę 15l.
Określamy l, umieszczając sufiks, a następnie określamy ich l,
a ich długie mamy długi wskaźnik wskazujący na wiele.
Ponownie, ponieważ jest to tablica, nie musimy używać adresu operatora.
Przejdziemy przez cały ten długi czas. Tutaj nie możemy użyć długości wymieszania, której
musimy użyć size of, a właściwie musimy podzielić ją przez każde miejsce w tablicy.
Więc całkowity rozmiar podzielony przez pojedyncze miejsce w tablicy,
wtedy chcemy wyskoczyć, ponieważ pamiętają
one nasze adresy, które są zwiększane o 4 bajty każdy.
I znowu to, co tutaj robimy, to po prostu wyświetlenie zarówno
wskaźnika, jak i tablicy i pokazanie, w jaki sposób
są one powiązane, a następnie wyświetlamy rzeczywistą całkowitą
liczbę bajtów, które są długie w naszym systemie.
I to znowu pokazuje, jak tablice są
powiązane ze wskaźnikami.
Więc jeśli to
uruchomimy, zobaczymy podobne wyniki. Ale to, co jest trochę inne,
to rozmiar adresu, zwiększający się o 4 bajty. Więc wydrukujemy adres i wskaźnik.
Więc dla adresu i wskaźnika plus
0, będzie to równe
tablicy sub 0, która ma adres 6356728.
Aby wyłuskać wskaźnik, otrzymamy wartość 15.
Więc p plus 0 nadal będzie równe tablicy sub 0.
A potem znowu robimy to samo dla p plus jedno p
plus 2 ip plus 3, wszystkie równoważne odpowiednim punktom w tablicy dla indeksu.
Adresy rosną o 4 bajty, ale nadal możemy dodać po prostu 2 i 3 i
widzimy, że wartości są takie same.
A potem mówi nam, że ten długi zajmuje 4 bajty i dlatego adresy rosną o 4.
Istotne jest to, że nadal możemy dodać jeden do niego,
a kompilator wie, że ma przejść do następnego adresu.
Więc bez względu na to, czy mamy długi, czy znak,
czy cokolwiek ten konkretny typ danych znajduje się w systemie,
dodanie jednego lub dwóch doda odpowiednią liczbę bajtów.
Więc kolejny fajny przykład, który chciałem
wam pokazać, ponieważ ta arytmetyka wskaźnika jest naprawdę ważna i
jest naprawdę przydatna podczas iteracji
lub przechodzenia przez tablicę, czyni ją znacznie czystszą i znacznie wydajniejszą.
Mam więc nadzieję, że to pomogło. Dziękuję Ci.