• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

zadania do nauki wskaźników

VPS Starter Arubacloud
+2 głosów
12,535 wizyt
pytanie zadane 3 sierpnia 2015 w C i C++ przez rafalmagician Obywatel (1,320 p.)
Cześć :)

Czy mogę prosić Was o treści zadań ze wskaźnikami ?? Tak żebym poćwiczył. Od prostych do tych trudnych. Bo dużo o tym czytam ale jest mało zadań... A mam dalej problem ze zrozumieniem tych wskaźników.

Pozdrawiam

5 odpowiedzi

+1 głos
odpowiedź 3 sierpnia 2015 przez Buby Pasjonat (19,590 p.)

Może te kilka zadań w czymś Ci pomogą. Mojego autorstwa, pisane na szybko. :)

Przed każdym masz objaśnienie:

  • Napisz dwie funkcje, przyjmujące jako argumenty wskaźnik typu int, na pierwszy element tablicy, oraz element za ostatnią wartością tablicy. Pierwsza funkcja ma wypełnić tablicę liczbami, druga natomiast wyświetlić. Wykorzystaj arytmetykę wskaźnikową - jak zapewne czytałeś, dodawanie do adresu liczby całkowitej, powoduje o przeskok o odpowiednią ilość bitów, która reprezentuje dany typ. Skorzystaj z tej wiedzy przy budowaniu pętli - możesz inkrementować pierwszy adres po każdym obiegu i sprawdzać, czy nie jest on równy elementowi za tablicą. Dzięki temu przeiterujesz całą tablicę. Funkcja wyświetlająca ma wyłuskiwać wartość spod zmiennej wskaźnika lokalnego, który inkrementujesz w pętli.
  • Utwórz strukturę, która będzie odpowiadać zapisowi punktu w przestrzeni 3D, czyli bedzie posiadać trzy składowe np. X,Y,Z. Napisz dwie funkcje - pierwsza typu void przyjmująca wskaźnik do struktury, która wypełni składowe losowymi liczbami z przedziału od -3 do 3. Druga typu bool, przyjmująca dwa wskaźniki na struktury, która porówna oba punkty pod kątem identyczności i zwróci odpowiednią wartość logiczną. Do odwoływania się do składowych wskaźnika klasy/struktury wykorzystaj operator wyłuskania składowej, czyli strzałkę ->.
  • Stwórz funkcję, która będzie przyjmować wskaźnik na tablicę łańcuchów typu char* oraz ilość wyrazów. Funkcja w pętli wypisze litery o parzystym indexie tablicy w poszczególnych wyrazach. Wyrazy mają być różnej długości. Aby nie wyjść poza pole iteracji wykorzystaj fakt, że każdy znak różny od 'nulla' jest większy od zera, więc warunek sprawdzający wykonanie pętli, będzie sprawdzał, czy wyłuskana wartość spod danego adresu jest większa niż 0.

Miłej zabawy! Pozdrawiam ;)

0 głosów
odpowiedź 3 sierpnia 2015 przez Krawiec91 Pasjonat (19,600 p.)
Nie wiem w jakim stopniu zaawansowany jesteś jeśli chodzi o C/C++. W moim przypadku to branie się za wskaźniki zacząłem po tym jak ogarnąłem abecadło (zmienne, instrukcje warunkowe, pętle, tablice). Po prostu zacząłem pisać na wskaźnikach to co wcześniej pisałem bez wskaźników, nawet jakby to by nie było bez sensu.
Na prostych programach ogarnąłem jak się nimi posługiwać, kiedy pisać z gwiazdką (*), kiedy bez gwiazdki, żeby na jakichś banałach nie siedzieć Bóg wie ile czasu.
Potem robiłem tablice. Nazwa tablicy jako wskaźnik, na pierwszy element. Arytmetyka wskaźników (dodawanie, odejmowanie). Łatwiej było skumać jak dane w tablicy są ułożone w pamięci.
Potem funkcje ze wskaźnikami, zarówno pojedyńcze zmienne jak i tablice. Przy okazji tego rozkmina nad tablicami char. Po co są te funkcje strcpy(), strcat(). Bo na studiach mówili, żeby używać, ale dlaczego to już sam musiałem rozkminić.;)
Jak to miałem obcykane, to zrozumienie wskaźników w połączeniu ze strukturami i klasami poszło na miękko.
0 głosów
odpowiedź 4 sierpnia 2015 przez Patrycjerz Mędrzec (192,320 p.)

Spróbuję ci powiedzieć, w czym przydają się wskaźniki zamiast zmiennych, może łatwiej zrozumiesz:

  • Szybsze wykonywanie kodu (program operuje na adresach do zmiennych, więc może szybciej odwołać się do nich, niż szukając każdorazowo w pamięci)
  • Korzystanie z polimorfizmu (wielopostaciowość jednego fragmentu kodu, stosowanie wskaźnika interfejsu i przypisywanie do niego adresów obiektów klas pochodnych)
  • Operacje na oryginalnych danych (np. gdy przesyłasz dane do funkcji w argumentach, to możesz przesłać adres zmiennej, a dana funkcja będzie pracować na oryginalnych zmiennych, bo ma ich adresy, a nie stworzy kopii; ważne także jest to, że można używać w tym przypadku referencji i jest to nawet bardziej preferowane, ale ja tylko podaje sytuacje, w których wskaźniki mogą się przydać laugh)

Oczywiście to nie wszystkie zalety stosowania wskaźników, ale są to te najważniejsze. Ja radzę, tak jak wcześniej kolega, aby nie marnować czasu na jakieś ćwiczenia z Sieci. Wystarczy, że kiedy będziesz znać zastosowanie wskaźników i różnicę między nimi a zwykłymi zmiennymi, to będziesz wiedział, jak je wykorzystać. 

Jeśli ktoś się uprze, to może programować bez stosowania wskaźników i jego programy nie rozpadną się z tego powodu laugh, ale nie będzie mógł korzystać z powyższych zalet.

Życzę miłego kodzenia i nie zniechęcania się do nauki! Czasami trzeba na chwilę stanąć i pomyśleć, żeby coś zrozumieć, więc nie bójmy się tego! Powodzenia!

0 głosów
odpowiedź 4 sierpnia 2015 przez mrcnsct Nałogowiec (36,390 p.)
0 głosów
odpowiedź 4 sierpnia 2015 przez dariusz Obywatel (1,800 p.)
Przy pisaniu listy jednokierunkowej zacząłem dobrze rozumieć wskaźniki. Warto coś takiego samemu napisać.

Podobne pytania

0 głosów
3 odpowiedzi 973 wizyt
pytanie zadane 15 marca 2018 w JavaScript przez Piotr50 Nowicjusz (240 p.)
0 głosów
1 odpowiedź 284 wizyt
pytanie zadane 2 września 2019 w C i C++ przez udj92026 Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 553 wizyt
pytanie zadane 30 lipca 2019 w C i C++ przez ocur99 Nowicjusz (120 p.)

93,008 zapytań

141,975 odpowiedzi

321,255 komentarzy

62,350 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...