Środowisko programisty/C - tablice i wskaźniki: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Linia 1: Linia 1:
== Tablice ==
== Tablice ==
=== Wstęp ===


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 5: 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 ===
 
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 ===


== Wskaźniki ==
== Wskaźniki ==
=== Allokacja pamięci ===
=== Allokacja pamięci ===
== Błędy ==
== Błędy ==

Wersja z 11:36, 21 wrz 2006

Tablice

Wstęp

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

Wskaźniki

Allokacja pamięci

Błędy