Zmienne wskaźnikowe - Uniwersytet Zielonogórski

Transkrypt

Zmienne wskaźnikowe - Uniwersytet Zielonogórski
Uniwersytet Zielonogórski
Laboratorium Programowania Obiektowego
Zmienne wskaźnikowe
Ćwiczenia
1. Napisać deklaracje następujących zmiennych:
• wskaźnik do znaku,
• referencja do dziesięcio elementowej tablicy liczb całkowitych,
• tablica pięciu wskaźników do liczb rzeczywistych,
• wskaźnik do stałej całkowitej,
• referencja do wskaźnika znaku,
• stały wskaźnik do stałej znakowej,
• wskaźnik pięcio elementowej tablicy liczb rzeczywistych,
• wskaźnik funkcji o parametrze i wartości w postaci referencji do liczb całkowitych.
2. Napisać deklaracje oraz zainicjalizować wskaźniki następujących funkcji:
• int fun(char znak,int *wsk_int),
• float* fun2(float,float),
• funkcja o parametrze typu całkowitego, zwracająca wskaźnik do tablicy znaków [3][3],
• funkcja o parametrach typu int i int*, której rezultatem jest referencja do znaku.
3. Co oznaczają następujące deklaracje?
• char (*r)[];,
• char *r[10];,
• char q(char *);,
• char (*q)(char[]);.
4. Wykorzystując notację wskaźnikową napisać funkcje:
a) strlen() - przekazującą długość napisu,
b) strcpy() - kopiującą jeden napis na drugi.
5. Narysować struktury powstałe po wykonaniu poniższych ciągów instrukcji:
class elem{
public:
int data;
elem *link;
};
a) elem *p = new elem; (*p).data=4; (*p).link=NULL;
b) elem *p = new elem; p->data=7; p->link=p;
c) elem *q = new elem; (*q).data=2; q->link=NULL;
elem *p = new elem; p->data=1; (*p)->link=q;
d) elem *p = new elem; p->data=5; p->link = new elem; *p->link=*p;
6. Napisać program, który odwzoruje w pamięci operacyjnej następującą strukturę
5
1
p
7
Rys 1. Struktura do ćwiczenia 6.
Zadania do samodzielnego wykonania
1. Napisać program, który spowoduje, że miejsce na stercie będzie zajmowane i zwalniane w następujących fazach:
Faza 1
*wsk1
*wsk2
*wsk3
*wsk4
*wsk5
Faza 2
*wsk1
*wsk3
*wsk5
Faza 3
*wsk6
*wsk7
*wsk3
*wsk8
*wsk5
Faza 4
*wsk6
Zmienne wsk1,wsk2,. . . , wsk8 są wskaźnikami do zmiennych tego samego typu. Za pomocą funkcji
coreleft z pakietu ALLOC.H sprawdzić czy pamięć jest rzeczywiście przydzielana i zwalniana.
2. Napisać program, wpisujący do rezerwowanych obszarów pamięci wprowadzane znaki z klawiatury
(max. 50 znaków). Kropka kończy wprowadzanie danych. Adresy tych obszarów mają być przechowywane w tablicy wskaźników. Dodatkowo napisać funkcje:
a) wyznaczającą na podstawie tablicy wskaźników liczbę wpisanych znaków,
b) wyświetlającą wszystkie znaki pomiędzy podanymi przez użytkownika pozycjami tablicy,
c) określającą liczbę wystąpień podanego przez użytkownika znaku.
3. Wykorzystując notację wskaźnikową napisać funkcje:
a) strcmp() - porównującą dwa napisy,
b) strcat() - łączącą dwa napisy przyjmowane jako argumenty w jeden,
c) strrev() - sprawdzającą czy dany znak występuje w napisie.
4. Napisać program, który odtworzy w pamięci następujące struktury:
p
1
5
7
p
0
2
"a"
NULL
a)
b)
Rys 2. Struktury do zadania 4.
5. * Napisać program umożliwiający przeładowanie wierszy pliku tekstowego do tablicy wskaźników
łańcuchów tekstowych (max. do 100 wierszy).