Środowisko programisty/C - tablice i wskaźniki

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

Tablice

Definicja

W języku C tablice definiuje się za pomocą składni nawiasów kwadratowych. Przykładowo 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

Allokacja pamięci

Błędy