background image

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:  

100 

background image

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; 

background image

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;