Informa, Wskaźniki tablice

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:

0

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;

}


Wyszukiwarka

Podobne podstrony:

więcej podobnych podstron