C/Tablice: Różnice pomiędzy wersjami

Dodane 9 bajtów ,  2 lata temu
m
kolejność
m (kolejność)
* wielowymiarowe
 
===Tablice znaków===
==Działania na tablicach==
 
 
===Sposoby deklaracji tablic===
Tablicę deklaruje się w następujący sposób:
<source lang="c">
typ nazwa_tablicy[rozmiar];
</source>
gdzie rozmiar oznacza ile zmiennych danego typu możemy zmieścić w tablicy. Zatem aby np. zadeklarować tablicę, mieszczącą 20 liczb całkowitych możemy napisać tak:
<source lang="c">
int tablica[20];
</source>
Podobnie jak przy deklaracji zmiennych, także tablicy możemy nadać wartości początkowe przy jej deklaracji. Odbywa się to przez umieszczenie wartości kolejnych elementów oddzielonych przecinkami wewnątrz nawiasów klamrowych:
<source lang="c">
int tablica[3] = {0,1,2};
</source>
 
Niekoniecznie trzeba podawać rozmiar tablicy, np.:
<source lang="c">
int tablica[] = {1, 2, 3, 4, 5};
</source>
W takim przypadku kompilator sam ustali rozmiar tablicy (w tym przypadku - 5 elementów).
 
Rozpatrzmy następujący kod:
<source lang="c">
#include <stdio.h>
#define ROZMIAR 3
int main()
{
int tab[ROZMIAR] = {3,6,8};
int i;
puts ("Druk tablicy tab:");
for (i=0; i<ROZMIAR; ++i) {
printf ("Element numer %d = %d\n", i, tab[i]);
}
return 0;
}
</source>
Wynik:
 
Druk tablicy tab:
Element numer 0 = 3
Element numer 1 = 6
Element numer 2 = 8
 
Jak widać, wszystko się zgadza.
 
W powyżej zamieszczonym przykładzie użyliśmy stałej do podania rozmiaru tablicy. Jest to o tyle pożądany zwyczaj, że w razie potrzeby zmiany rozmiaru tablicy, zmieniana jest tylko wartość w jednej linijce kodu przy <tt>#define</tt>, w innym przypadku musielibyśmy szukać wszystkich wystąpień rozmiaru rozsianych po kodzie całego programu.
 
===Odczyt/zapis wartości do tablicy===
Tablicami posługujemy się tak samo jak zwykłymi zmiennymi. Różnica polega jedynie na podawaniu '''indeksu''' tablicy. Określa on, z którego elementu (wartości) chcemy skorzystać spośród wszystkich umieszczonych w tablicy. Numeracja indeksów rozpoczyna się od zera, co oznacza, że pierwszy element tablicy ma indeks równy 0, drugi 1, trzeci 2, itd.
 
{{Uwaga|Osoby, które wcześniej programowały w językach, takich jak [[Object Pascal|Pascal]], Basic czy [[Fortran]], muszą przyzwyczaić się do tego, że w języku C indeks numeruje się od 0.}}
 
Spróbujmy przedstawić to na działającym przykładzie. Przeanalizuj następujący kod:
<source lang="c">
int tablica[5] = {0};
int i = 0;
tablica[2] = 3;
tablica[3] = 7;
for (i=0;i!=5;++i) {
printf ("tablica[%d]=%d\n", i, tablica[i]);
}
</source>
Jak widać, na początku deklarujemy 5-elementową tablicę, którą od razu zerujemy. Następnie pod trzeci i czwarty element (liczone począwszy od 0) podstawiamy liczby 3 i 7. Pętla ma za zadanie wyprowadzić wynik naszych działań.
 
Tablica może być również zmieniana [[C/Funkcje#Tablice_jako_parametr_funkcji|w obrębie funkcji]]
 
==Tablice znaków==
Tablice znaków, tj. typu char oraz unsigned char, posiadają dwie ogólnie przyjęte nazwy, zależnie od ich przeznaczenia:
* bufory - gdy wykorzystujemy je do przechowywania ogólnie pojętych danych, gdy traktujemy je jako po prostu "ciągi bajtów" (typ char ma rozmiar 1 bajta, więc jest elastyczny do przechowywania np. danych wczytanych z pliku przed ich przetworzeniem).
</source>
 
===Tablice wielowymiarowe===
[[Grafika:Array2.svg|thumb|150px|tablica dwuwymiarowa (5x5)]]
Rozważmy teraz konieczność przechowania w pamięci komputera całej macierzy o wymiarach 10 x 10. Można by tego dokonać tworząc 10 osobnych tablic jednowymiarowych, reprezentujących poszczególne wiersze macierzy. Jednak język C dostarcza nam dużo wygodniejszej metody, która w dodatku jest bardzo łatwa w użyciu. Są to '''tablice wielowymiarowe''', lub inaczej "tablice tablic".
 
 
====Kolejność głównych wierszy====
Kolejność głównych wierszy ( ang. Row Major Order = ROM <ref>[[:w:en:Row-major_order|Row-major_order w ang wikipedii]]</ref>)
 
}
</source>
 
 
 
==Działania na tablicach==
 
 
===Sposoby deklaracji tablic===
Tablicę deklaruje się w następujący sposób:
<source lang="c">
typ nazwa_tablicy[rozmiar];
</source>
gdzie rozmiar oznacza ile zmiennych danego typu możemy zmieścić w tablicy. Zatem aby np. zadeklarować tablicę, mieszczącą 20 liczb całkowitych możemy napisać tak:
<source lang="c">
int tablica[20];
</source>
Podobnie jak przy deklaracji zmiennych, także tablicy możemy nadać wartości początkowe przy jej deklaracji. Odbywa się to przez umieszczenie wartości kolejnych elementów oddzielonych przecinkami wewnątrz nawiasów klamrowych:
<source lang="c">
int tablica[3] = {0,1,2};
</source>
 
Niekoniecznie trzeba podawać rozmiar tablicy, np.:
<source lang="c">
int tablica[] = {1, 2, 3, 4, 5};
</source>
W takim przypadku kompilator sam ustali rozmiar tablicy (w tym przypadku - 5 elementów).
 
Rozpatrzmy następujący kod:
<source lang="c">
#include <stdio.h>
#define ROZMIAR 3
int main()
{
int tab[ROZMIAR] = {3,6,8};
int i;
puts ("Druk tablicy tab:");
for (i=0; i<ROZMIAR; ++i) {
printf ("Element numer %d = %d\n", i, tab[i]);
}
return 0;
}
</source>
Wynik:
 
Druk tablicy tab:
Element numer 0 = 3
Element numer 1 = 6
Element numer 2 = 8
 
Jak widać, wszystko się zgadza.
 
W powyżej zamieszczonym przykładzie użyliśmy stałej do podania rozmiaru tablicy. Jest to o tyle pożądany zwyczaj, że w razie potrzeby zmiany rozmiaru tablicy, zmieniana jest tylko wartość w jednej linijce kodu przy <tt>#define</tt>, w innym przypadku musielibyśmy szukać wszystkich wystąpień rozmiaru rozsianych po kodzie całego programu.
 
===Odczyt/zapis wartości do tablicy===
Tablicami posługujemy się tak samo jak zwykłymi zmiennymi. Różnica polega jedynie na podawaniu '''indeksu''' tablicy. Określa on, z którego elementu (wartości) chcemy skorzystać spośród wszystkich umieszczonych w tablicy. Numeracja indeksów rozpoczyna się od zera, co oznacza, że pierwszy element tablicy ma indeks równy 0, drugi 1, trzeci 2, itd.
 
{{Uwaga|Osoby, które wcześniej programowały w językach, takich jak [[Object Pascal|Pascal]], Basic czy [[Fortran]], muszą przyzwyczaić się do tego, że w języku C indeks numeruje się od 0.}}
 
Spróbujmy przedstawić to na działającym przykładzie. Przeanalizuj następujący kod:
<source lang="c">
int tablica[5] = {0};
int i = 0;
tablica[2] = 3;
tablica[3] = 7;
for (i=0;i!=5;++i) {
printf ("tablica[%d]=%d\n", i, tablica[i]);
}
</source>
Jak widać, na początku deklarujemy 5-elementową tablicę, którą od razu zerujemy. Następnie pod trzeci i czwarty element (liczone począwszy od 0) podstawiamy liczby 3 i 7. Pętla ma za zadanie wyprowadzić wynik naszych działań.
 
Tablica może być również zmieniana [[C/Funkcje#Tablice_jako_parametr_funkcji|w obrębie funkcji]]
 
 
== Ograniczenia tablic ==
6160

edycji