Ćwiczenia 7
Podstawy programowania - Wskaźniki
Wskaźnik(ang. pointer) – typ zmiennej odpowiedzialnej za przechowywanie adresu do innej zmiennej (innego miejsca w pamięci) w obrębie naszej aplikacji.
Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:
* – operator wyłuskania wartości zmiennej, na którą wskazuje wskaźnik (wyciąga wartość ze wskaźnika)
& – operator pobrania adresu danej zmiennej, tablicy, struktury itp. (pobiera adres zmiennej)
W języku C++ możemy do funkcji przekazać dowolną ilość parametrów. Modyfikując parametry w obrębie ciała funkcji oryginalne zmienne nie zmienią się. Przekazując zmienne do funkcji poprzez wartość (czyli w sposób standardowy), tworzymy wewnątrz funkcji ich kopię! Co z tego faktu wynika? Każda funkcja w C++ może zmodyfikować maksymalnie jedną zmienną, za pomocą wartości zwracanej return.
Co zrobić, aby jedną funkcją zmodyfikować 3 zmienne na raz? Nie można użyć rozkazu return 3 razy, ponieważ każda funkcja zwraca tylko jedną wartość. W tej sytuacji trzeba skorzystać ze wskaźników. Jeżeli przekażemy do funkcji jako jej argument wskaźnik, wtedy operacje na wskaźniku zmieniają zmienną oryginalną z poza ciała funkcji – nie operujemy na kopii zmiennej. Dzięki temu, nawet jeżeli funkcja jest typu void i nic nie zwraca, możemy modyfikować wiele zmiennych z poza ciała funkcji:
Źródło: http://www.p-programowanie.pl/cpp/wskazniki/
Zadania:
1. Napisz funkcję, która posortuje liczby zapisane w zmiennych a, b I c w rosnącej kolejności.
Użyj wskaźników. Przetestuj jej działanie.
2. Napisz program definiujący zmienną typu int oraz wskaźnik do tej zmiennej. Program powinien wczytać z klawiatury wartość i podstawić ją do zmiennej stosując wskaźnik.
3. Napisz program definiujący strukturę Punkt zawierającą pola X i Y (współrzędne punktu).
Stwórz zmienną tego typu oraz wskaźnik do tej zmiennej. Wczytaj z klawiatury wartości pól tej zmiennej I przypisz je do niej z użyciem wskaźnika. (Użyj operatora -> zamiast . w celu dostępu do pól struktury przy użyciu wskaźnika)