Tablice 1. Deklaracja tablicy

1 Tablice 1. Deklaracja tablicyTablica jest zbiorem eleme...
Author: Dita Gutkowski
0 downloads 4 Views

1 Tablice 1. Deklaracja tablicyTablica jest zbiorem elementów tego samego typu. Każdy element tablicy ma numer. Numer pierwszego elementu w tablicy jest zawsze równy zero. W języku C nie można deklarować tablic wielowymiarowych, jest jednak możliwa deklaracja tablic zawierających tablice, co odpowiada tablicom wielowymiarowym w innych językach. Deklaracja tablicy ma postać: [typ_elementu] [nazwa_zmiennej] [rozmiar] Przykład: int arr[10]; Każdy element deklarowanej tablicy będzie typu typ_elementu, pierwszy element będzie miał numer 0, drugi - 1, ... , ostatni - rozmiar-1. Tablicę można inicjować podając w deklaracji po jej nazwie i znaku równości listę wartości oddzielonych przecinkami i zamkniętych w nawiasach klamrowych.

2 int a[2][3]; /* podano w postacie macierzy a[0][0] a[0][1] a[0][2] Jeśli tablica jest inicjowana w deklaracji, to nie jest konieczne podawanie jej rozmiaru. Możliwość ta jest dostępna we wszystkich kompilatorach ANSI C. Przykłady: int a1[5] = {1,5,3,4,2}; int a2[] = {1,5,6,3,4,5,6}; int a[2][3]; /* podano w postacie macierzy a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2] */ double b[10]; /* wektor z 10 elementów typu double */ int w[3][3] = { { 2, 3, 4 }, { 3, 4, 8 }, { 1, 0, 9 } }; Tablic używa się w programie podając nazwę zmiennej tablicowej oraz numer elementu, którego operacja ma dotyczyć ujęty w nawiasy kwadratowe.

3 Jako numer elementu może służyć stała całkowita, zmienna typu całkowitego lub dowolne wyrażenie, którego wynikiem jest liczba całkowita. Nawiasy kwadratowe zawierające numer elementu tablicy nazywane są operatorem indeksowania. Przykład: int a[10]; int i; i = 5; a[5] = 10; a[a[5] - 5] = 4; Możliwe jest zadeklarowanie tablicy tablic (odpowiadającej tablicy dwu- lub więcej wymiarowej): int a[10][15]; Powyższa instrukcja deklaruje 10-cio elementową tablicę a, której polami są 15-sto elementowe tablice zmiennych typu int.

4 Odwołanie do elementów tablicy następuje w sposób naturalny - najpierw podaje się numer tablicy, potem numer elementu wewnątrz tej tablicy: a[4][5] = 10; Niepoprawne jest: a[10][19] = 6;

5 2. Tablice, funkcje i wskaźnikiNazwa tablicy (bez nawiasów []) oznacza wskaźnik na pierwszy element tej tablicy (element o numerze 0). Nazwa tablicy jest jednak wskaźnikiem stałym, tzn. nie można przypisać jej innego wskaźnika. Możliwa jest jednak operacja odwrotna tzn. przypisanie wskaźnikowi nazwy tablicy: int dane[10]; int *p; p = dane; Na wskaźnikach można wykonywać operacje dodawania lub odejmowania liczb całkowitych. Dodanie liczby całkowitej n do wskaźnika powoduje, że wynik wskazuje o n elementów dalej niż wskaźnik wyjściowy. Podawanie liczby nie oznacza zwiększenia wskaźnika o n bajtów, ale o n elementów tego typu na jaki wskazuję wskaźnik

6 Nie można stosować dodawania lub odejmowania liczb do wskaźników typu void *, ponieważ nie wiadomo na jakiego typu element wskazuje. Ponieważ nazwa tablicy jest wskaźnikiem na pierwszy element, więc również do tej nazwy można dodawać liczbę całkowitą (n) i w ten sposób uzyskać wskaźnik na element tablicy o numerze n. Aby uzyskać wartość zmiennej, na którą wskazuje wskaźnik należy przed nazwą tego wskaźnika napisać '*'. Operator '*' nazywa się operatorem wyłuskania. Dostęp do elementu tablicy o numerze n można, więc uzyskać na 2 sposoby: dane[n] *(dane + n) W przypadku odwołania do wskaźnika, który nie jest tablicą (ale może wskazywać na pewien element tablicy) można również stosować oba podane wyżej sposoby!

7 Poprawne są zapisy: p = dane;p[2] = 2; oraz p = dane +1; p[1] = 2; i są one równoważne zapisowi: dane[2] = 2; Kompilator zamienia wszystkie odwołania do elementu tablicy zapisane za pomocą operatora [ ], czyli nazwa[n] na zapis *(nazwa +n) - oba te zapisy są równoważne

8 4. Operacji dla tablic. 4.1 Operacji jednowymiarowe.Suma elementów tablicy. Niech mamy tablice

9 Suma elementów tablicy.

10 Iloraz elementów tablicy.Niech mamy tablice

11 Iloraz elementów tablicy.Niech mamy tablice

12 Uporządkowanie tablicy liczb.

13 Uporządkowanie tekstowej tablicy.

14 Uporządkowanie tekstowej tablicy.