Wskaźnik C ++ arytmetyka

Wskaźnik C ++ arytmetyka

Wiemy, że wskaźniki są adresami pamięci zmiennych i ogólnie są numeryczne. Dlatego możemy również wykonać obliczenia arytmetyczne na wskazówkach. Te obliczenia można wykonać tak samo, jak w zakresie wartości numerycznych w matematyce lub programowaniu. Dlatego będziemy omawiać niektóre operacje arytmetyczne na wskazówkach w naszym przewodniku samouczka za pomocą C++. Używamy Ubuntu 20.04 System upewniający się, że kompilator G ++ jest skonfigurowany. Zacznijmy od wdrożenia arytmetyki wskaźnika w Ubuntu 20.04 SYSTEMOWA KONFORMINEJ ZA POMOC KRÓTKI CTRL+ALT+T UŻYWA NA DZYSKI.

Przykład 1:

Rozpocznij pierwszy przykład kodu C ++, aby użyć operatorów arytmetycznych „+” na wskazówkach według tworzenia plików. Możesz utworzyć plik na wiele sposobów, ale najprostszym jest użycie instrukcji „dotyk”. W ten sposób wypróbowaliśmy słowo kluczowe wraz z tytułem pliku, który ma zostać utworzony na konsoli i naciśnięty Enter. Plik jest tworzony w Ubuntu 20.04 Folder domowy.

Teraz, aby otworzyć ten nowo utworzony plik, możesz użyć dowolnego z wbudowanych redaktorów z Ubuntu 20.04 i.mi. VIM, edytor tekstu lub redaktor GNU Nano. Sugerujemy użycie edytora GNU Nano, ponieważ używaliśmy go w powładzie, jak pokazano na poniższym obrazku.

Ten plik „Wskaźnik.CC ”jest do tej pory rozpalany w redakcji. W pierwszym wierszu dołączyliśmy plik nagłówka strumienia wejściowego, a standardowy przestrzeń nazw została użyta w drugim wierszu. Zainicjowaliśmy zmienną całkowitą „V” o wartości 8. W następnym kolejnym wierszu zainicjowaliśmy wskaźnik typu liczb całkowitych „P”. Ten wskaźnik jest adresem zmiennej „V”, ponieważ jest związany zmienną „V” za pomocą znaku „&”. Oznacza to, że w dowolnym momencie możemy zmienić adres zmiennego. Standardowe instrukcje cout zostały użyte jeden po drugim. Pierwszy wyświetla oryginalny adres zmiennej „V” zapisany jako wskaźnik „P”.

W następnym wierszu instrukcja Cout zwiększa adres wskaźnika o 1 i wyświetla go. Następne dwa wiersze używają wskaźnika i zwiększają jego wartość o 2 i 3. Wartości przyrostowe zostały wyświetlone z instrukcją Cout. Kod kończy się tutaj. Zapiszmy kod najpierw przed wykonaniem. Użyj w tym celu Ctrl+S. Musisz rzucić redaktora GNU Nano, aby wrócić do terminala. Skorzystaj z klucza skrótu „Ctrl+x” do tego celu. To był najprostszy kod C ++ do zwiększenia wskaźnika za pomocą operatora+.

Po powrocie do powłoki musimy uczynić nasz kod bezbłędny. Kompilator C ++ jest używany do tej wytrwałości. Słowo kluczowe kompilatora „G ++” zostało użyte wraz z nazwą pliku do skompilowania i.mi. "wskaźnik.CC ”. Kompilacja jest skuteczna, ponieważ widać, że nic nie zwraca. Wykonajmy nasz kod bezbłędny za pomocą ”./A.out ”standardowe polecenie. Mamy 4 różne adresy dla zmiennej „V”.

Pierwszy to oryginalny adres „P” zmiennej „V”. Drugi jest zwiększany o 1, trzeci jest zwiększany o wartość 2, a ostatnia jest zwiększana o 3. Za każdym razem wykonujemy przyrost, ostatnie dwa znaki adresu zwykle się zmieniają, jak pokazano poniżej.

Przykład 2:

Zróbmy kolejny przykład, aby użyć operatora spadku na wskaźniku. Więc konsumowaliśmy ten sam stary plik „Wskaźnik.CC ”. Przestrzeń nazw i nagłówek wejściowy są używane tak samo jak wcześniej. Kolejna stała zmienna całkowita „S” jest inicjowana ze stałą wartością 5. W ramach metody main () używamy tablicy typu liczb całkowitych o nazwie „V” wielkości „s” z 5 elementami. Wskaźnik liczb całkowitych „P” został ogłoszony. Wskaźnik został związany z tablicą liczb całkowitych „V” za pomocą znaku „&”.

Rozmiar zostanie uruchomiony od adresu S-1. Pętla „dla” została zainicjowana, która rozpocznie się od rozmiaru 5 i działa w kolejności zmniejszającej się przez zmniejszenie o 1 za każdym razem. Za każdym razem, gdy działa pętla „dla”, wyświetla adres pamięci numeru indeksu iterowanego przez pętlę i wartość w określonym indeksie. „P” pokazuje adres indeksu, podczas gdy *P reprezentuje wartość w tym konkretnym indeksie. W każdej iteracji wskaźnik został zmniejszony o 1. Pętla kończy się tutaj, a także główną funkcją.

Skompiluj kod najpierw z kompilatorem G ++ języka C ++. Działa z powodzeniem bez błędów. Wykonanie jest wykonywane przez „./A.OUT ”polecenie. Mamy wyjście, jak pokazano poniżej. Możesz zobaczyć, mamy każdy adres pamięci dla konkretnego indeksu i.mi. 5,4,3,2,1 w zmniejszającej się kolejności indeksów. Z drugiej strony mamy również wartości na każdym konkretnym indeksie za każdym razem, gdy pętla itera w kolejności malejącej do ostatniej wartości.

Przykład 3:

Miejmy nowy przykład wskaźników. W tym przykładzie będziemy porównywać adresy wskaźnika, a także zawierane wartości. Zatem wskaźnik dokumentu.CC jest teraz uruchomiony w edytorze GNU Nano. Funkcja main () została zainicjowana po standardowej przestrzeni nazw i nagłówku strumienia „IO” w pliku kodu. Zawiera dwie zmienne typu ciągów S1 i S2 z zupełnie innymi wartościami ciągów i.mi. „Aqsa” i „Yasin”.

Następnie zainicjowaliśmy dwie zmienne wskaźnika typu ciągów P1 i P2 ograniczone obiema zmiennymi S1 i S2 przy użyciu znaku „i” po znaku „=”. Oznacza to, że wskaźnik P1 jest adresem zmiennej S1 i P2 to adres zmiennej S2.

Pierwsza standardowa klauzula Cout jest używana do pokazania wyniku porównania obu wskazówek i.mi. Adresy obu zmiennych ciągu. Jeśli adresy są takie same, wyświetli 1 jako prawdziwy inaczej 0 jako fałszywy na powładzie. Druga standardowa klauzula COUT służy do wyświetlania wyniku porównawczego wartości przechowywanych w określonym adresie wskaźnika. Jeśli wartości są takie same, zwróci 1, w przeciwnym razie 0. Program porównawczy kończy się tutaj.

Najpierw skompiluj kod C ++ i wykonaj go. Mamy 0 w wyniku obu porównań i.mi. FAŁSZ. Oznacza to, że zarówno adresy wskaźnika, jak i wartości na tych adresach nie są takie same.

Zmieńmy trochę kodu. Otwórz ten sam plik i zaktualizuj wartości ciągów. Te same zmienne ciągów S1 i S2 zostały zainicjowane z tymi samymi wartościami i.mi. AQSA. Reszta kodu jest używana niezmieniona, tak jak wcześniej. Zapisz kod, aby uzyskać zaktualizowany wynik.

Mamy 0 jako wynik porównywania adresów wskaźnika, ponieważ obie zmienne zawierają różne adresy pamięci i 1 w wyniku porównania wartości i.mi. Te same wartości obu ciągów.

Wniosek:

Omówiliśmy operacje arytmetyczne wykonywane na wskazówkach. Wykorzystaliśmy operatorów arytmetyki przyrostu i zmniejszenia na wskazówkach. Omówiliśmy również przykłady bonusowe ilustrujące działanie operatora porównawczego na dwóch różnych wskazówkach.