Definicja
W j
ę
zyku C tablice definiuje si
ę
za pomoc
ą
składni nawiasów kwadratowych. Na przykład tablica
zawieraj
ą
ca 10 liczb całkowitych mo
ż
e wygl
ą
da
ć
nast
ę
puj
ą
co
int liczby[10];
W przeciwie
ń
stwie do Pascala pozycje tablicy s
ą
indeksowane od zera, a nie od jedynki. Czyli kolejne
pozycje w tablicy liczby to: liczby[0], liczby[1], ..., liczby[9].
Sprawdzanie zakresów
W C nie ma automatycznej kontroli zakresów tablic, czyli mo
ż
na w kodzie programu napisa
ć
liczby[10], a nawet liczby[-1] i to zostanie poprawnie skompilowane, po czym program mo
ż
e zacz
ąć
działa
ć
niepoprawnie.
A teraz, zupełnie z innej beczki, dziwny przykład:
#include <stdio.h>
int main()
{
int a[2];
int b[2];
a[1] = 0;
printf("%d\n", a[1]);
b[3] = 100; // To nie jest normalne!!
printf("%d\n", a[1]);
return 0;
}
Program powinien si
ę
wywali
ć
na linii b[3] = 1 (bo tablica b ma elementy 0 i 1), a je
ś
li si
ę
nie wywala,
to powinien przynajmniej wypisa
ć
dwa razy 0 (bo to jest warto
ść
a[1]), podczas gdy z du
ż
ym
prawdopodobie
ń
stwem wypisze:
0
100
Tablice wielowymiarowe
Istnieje mo
ż
liwo
ść
tworzenia tablic wielowymiarowych, korzystaj
ą
c z konstrukcji:
typ tablica[rozmiar1][rozmiar2]....
Przykładowo tabliczk
ę
mno
ż
enia 10x10 mo
ż
na wypisa
ć
w sposób nast
ę
puj
ą
cy:
include <stdio.h>
int main()
{
int tabliczka[10][10];
int i, j;
for(i = 1; i <= 10; i++)
for(j = 1; j <= 10; j++)
tabliczka[i-1][j-1] = i * j;
for(i = 0; i < 10; i++) {
for(j = 0; j < 10; j++)
printf("%d ", tabliczka[i][j]);
printf("\n");
}
return 0;
}
Wska
ź
niki
Wska
ź
niki s
ą
bardzo ciekawym rodzajem zmiennych w C, gdy
ż
w przeciwie
ń
stwie do Pascala, mo
ż
na
na nich wykonywa
ć
operacje arytmetyczne. Wska
ź
niki deklaruje si
ę
, poprzedzaj
ą
c nazw
ę
zmiennej
gwiazdk
ą
.
int zmienna;
int *wskaznik;
Mo
ż
na to zrobi
ć
w jednej linijce:
int zmienna, *wskaznik;
Dwoma podstawowymi operatorami zwi
ą
zanymi ze wska
ź
nikami s
ą
1. * zawato
ść
zmiennej wskazywanej przez wska
ź
nik
2. & adres zmiennej
Sprawd
ź
my działanie wska
ź
ników na przykładzie:
#include <stdio.h>
int main()
{
int zmienna;
int *wskaznik;
zmienna = 1;
printf("%d\n", zmienna);
wskaznik = &zmienna;
*wskaznik = 2;
printf("%d\n", zmienna);
printf("%d\n", *wskaznik);
zmienna = 3;
printf("%d\n", zmienna);
printf("%d\n", *wskaznik);
return 0;
}