12
Metodyka i techniki programowania
Wskaźniki
Mgr inż. Jacek Wszołek
Ćwiczenie. Zmienne wskaźnikowe
1. Deklaracje zmiennych wskaźnikowych. Poniższy przykład prezentuje sposób
definiowania zmiennych wskaźnikowych:
//wskaźnik znaku
char *wsk_znaku;
//wskaźnik liczby całkowitej
int *wsk_inta;
//wskaźnik liczby rzeczywistej
double *wsk_liczby_rzeczywistej;
int **wsk_wsk; //wskaźnik wskaźnika int’a
2. Dostęp do zmiennych wskazywanych za pośrednictwem wskaźników:
//pobranie wartości wskaźników
char znak = ’a’;
wsk_znaku = &znak;
int liczba = 20;
wsk_inta = &liczba;
double liczba_rz = 10.54e-9;
wsk_liczby_rzeczywistej = &liczba_rz;
//dostęp do zmiennych za pomocą wskaźnika
*wsk_znak = ‘b’;
*wsk_inta = 44;
*wsk_liczby_rzeczywistej = ’5e-3’;
3. Wskaźniki i tablice
Do elementu tablicy możemy odwołać się poprzez:
- indeks, przy czym pierwszy element tablicy ma indeks równy 0.
- wskaźnik
int tablica[20];
tablica[9] = 12; //dostęp przez indeksowanie
*(tablica + 9) = 12; //dostęp przez wskaźnik
Pytania:
1. Po co wskaźnik ma typ? W końcu wskazuje on na komórkę pamięci, co za
różnica co jest w tej komórce?
2. Jaki sens ma wskaźnik do wskaźnika?
3. Czy można inkrementować wskaźniki do tablic i dlaczego?
np:
int tablica[4] = {1, 2, 3, 4};
tablica++;
4. Jak odwołujemy się do elementów tablicy wielowymiarowej za
pośrednictwem wskaźników.
Zadania:
1. Napisz program, który odwraca kolejność elementów w tablicy (tzn. pierwszy
element staje się ostatnim, drugi element staje się przedostatnim, itd.)
2. Napisz program, który dodaje, odejmuje i mnoży dwie macierze (jako macierz
użyj dwuwymiarowej tablicy). Do elementów macierzy odwołuj się jedynie za
pomocą wskaźników.
3. *Napisz program, który wykonuje transpozycje macierzy (jako macierz użyj
dwuwymiarowej tablicy). Do elementów macierzy (tablicy) odwołuj się
jedynie przez wskaźniki.
4. **Napisz program, który oblicza wyznacznik macierzy (tablicy). Do
elementów macierzy (tablicy) odwołuj się jedynie przez wskaźniki.