Informatyka II. INF & EIT. Ćwiczenie 3.
Operacje z wykorzystaniem wskaźników
Zagadnienia: Wskaźniki. Dynamiczne przydzielanie pamięci zmiennym za pomocą funkcji mal- loc i operatora new. Wstawianie danych do komórek pamięci o ustalonym adresie. Tablice i wskaźniki. Inicjowanie tablic wielowymiarowych z wykorzystaniem wskaźników. Funkcja main() i jej parametry.
1. Wykorzystując
a) funkcję malloc;
b) operator new;
przydzielić dynamicznie pamięć zmiennym typu char, int, long, float, double oraz zapamię- tać ich adresy w odpowiednich wskaźnikach. W przypadku, gdy alokacja pamięci powiedzie się zainicjować zmienne danymi wprowadzanymi z klawiatury. Wyprowadzić adresy oraz wartości zmiennych na ekran. Przed zakończeniem programu zwolnić przydzieloną pamięć.
2. Opracować funkcje:
a) wstawiającą daną typu unsigned char do pamięci wskazywanej przez void *p;
b) odczytującą daną typu unsigned char z pamięci wskazywanej przez void *p.
Zainicjować zmienną typu char za pomocą funkcji a) oraz odczytać jej wartość za pomocą funkcji b).
3. Opracować funkcje, które inicjują losowymi liczbami całkowitymi należącymi do przedziału [-10, 10] podtablice o wymiarach w0≤N0 tablicy int tab1[N0], gdzie N0 – stała. Prototypy funkcji:
a) void init1a(int *tab, int w0);
b) void init1b(int tab[], int w0).
Wyprowadzić zainicjowane tablice na ekran.
4. Opracować funkcje, które inicjują losowymi liczbami całkowitymi należącymi do przedziału [-1, 12] podtablice o wymiarach w0≤N0 i w1≤N1 tablicy int tab2[N0][N1], gdzie N0, N1 – stałe. Prototypy funkcji:
a) void init2a(int *tab, int w0, int w1);
b) void init2b(int tab[][N1], int w0, int w1).
Sprawdzić, czy inicjacje a) i b) dają takie same wyniki dla podtablic, np. dla tablicy tab2[9][9] i wywołania dla podtablicy init2a(tab2[0], 5, 5) oraz init2b(tab2, 5, 5).
5. Opracować funkcje, które inicjują losowymi liczbami całkowitymi należącymi do przedziału [-7, 15] podtablice o wymiarach w0≤N0, w1≤N1 i w2≤N2 tablicy int tab3[N0][N1]]N2], gdzie N0, N1, N2 – stałe. Prototypy funkcji:
a) void init3a(int *tab, int w0, int w1, int w2);
b) void init3b(int tab[][N1][N2], int w0, int w1, int w2).
6. Napisać program umożliwiający przekazanie do programu dowolnej liczby argumentów typu int za pomocą parametrów funkcji main(int argc, char *argv[]). Wyświetlić na ekranie wprowadzone liczby oraz ich sumę (wykorzystać funkcję atoi). Przetestować program dla wywołania prog 1 2 3.