Środowisko programisty/C - tablice i wskaźniki: Różnice pomiędzy wersjami
Linia 1: | Linia 1: | ||
== Tablice == | == 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 | 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 | ||
Linia 7: | Linia 7: | ||
int liczby[10]; | 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]. | 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 === | === Sprawdzanie zakresów === |
Wersja z 11:47, 21 wrz 2006
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; }